Startprobleme
-
Zeig doch einfach mal, wie ein Datensatz in "C:\Datei.txt" aussieht bzw aussehen soll. Erst dann kann man sagen wie die Infos der Struktur Programm gelesen bzw geschrieben werden. Letztendlich hast du 2 Möglichkeiten. Entweder du machst das ganze 1:1. Dann wird "C:\Datei.txt" aber eher eine binäre Datei. Oder du wandelst die Infos vorher erst um. Das klingt zwar aufwendiger, ist aber dank Funktionen wie fprintf unf fscanf relativ simpel (auch wenn das alles andere als schönes C++ ist
).
-
[quote="groovemaster"]Zeig doch einfach mal, wie ein Datensatz in "C:\Datei.txt" aussieht bzw aussehen soll. Erst dann kann man sagen wie die Infos der Struktur Programm gelesen bzw geschrieben werden. Letztendlich hast du 2 Möglichkeiten. Entweder du machst das ganze 1:1. Dann wird "C:\Datei.txt" aber eher eine binäre Datei. Oder du wandelst die Infos vorher erst um. Das klingt zwar aufwendiger, ist aber dank Funktionen wie fprintf unf fscanf relativ simpel (auch wenn das alles andere als schönes C++ ist
).[/quote]
Hallo
so sieht die Datei aus warum zeigt er die Miegliedsnummer und die Postleitzahl nich anSpiekermann_Hubert Im_Wieshof_16 Tå Menden ¤ Spiekermann_Michael Im_Wieshof_16 Tå Menden » Spiekermann_Hubert Heimkerweg_29 Rå Menden ¹ Kobusch_Fred Eichendorffstrasse_1Tå Menden »
-
hanna1 schrieb:
warum zeigt er die Miegliedsnummer und die Postleitzahl nich an
Das liegt genau daran, dass es nicht umgewandelt wurde. In deiner Datei steht nunmal Text. Mitgliedsnummer, Postleitzahl und Eintrittsjahr sind im Programm aber ganzzahlige Werte.
Schreiben kannst du die Datensätze wie folgtfprintf(Datei, "%i %s %s %i %s %i", STRUKT[i].mgnr, STRUKT[i].nvn, STRUKT[i].str, STRUKT[i].plz, STRUKT[i].ort, STRUKT[i].etj);
Und lesen
fscanf(Datei, "%i %s %s %i %s %i", &STRUKT[i].mgnr, STRUKT[i].nvn, STRUKT[i].str, &STRUKT[i].plz, STRUKT[i].ort, &STRUKT[i].etj);
Dabei ist zu beachten, dass die scanf-Funktionen Strings ua nur bis zum nächsten Leerzeichen einlesen. Das sollte aber bei deinen Daten wohl keine Probleme machen.
-
[quote="groovemaster"][quote="hanna1"]warum zeigt er die Miegliedsnummer und die Postleitzahl nich an[/quote]
Das liegt genau daran, dass es nicht umgewandelt wurde. In deiner Datei steht nunmal Text. Mitgliedsnummer, Postleitzahl und Eintrittsjahr sind im Programm aber ganzzahlige Werte.
Schreiben kannst du die Datensätze wie folgtfprintf(Datei, "%i %s %s %i %s %i", STRUKT[i].mgnr, STRUKT[i].nvn, STRUKT[i].str, STRUKT[i].plz, STRUKT[i].ort, STRUKT[i].etj);
Und lesen
fscanf(Datei, "%i %s %s %i %s %i", &STRUKT[i].mgnr, STRUKT[i].nvn, STRUKT[i].str, &STRUKT[i].plz, STRUKT[i].ort, &STRUKT[i].etj);
Dabei ist zu beachten, dass die scanf-Funktionen Strings ua nur bis zum nächsten Leerzeichen einlesen. Das sollte aber bei deinen Daten wohl keine Probleme machen.[/quote]
tut mir leid ich bin wahrscheinlich noch zu dämlich muss das in aendern, oder Eingabe oder Anzeige rein oder wo? Wenn ja wie?
noch ein Problem ich muss ja wenn ich in aendern etwas aendern will den Cursor am Anfang haben.
-
fprintf schreibst du dort rein, wo die Daten in die Datei geschrieben werden sollen. Also dorthin, wo du jetzt fwrite stehen hast. fscanf ist dann fürs Lesen der Datei zuständig.
hanna1 schrieb:
noch ein Problem ich muss ja wenn ich in aendern etwas aendern will den Cursor am Anfang haben
Und das Problem wäre...
-
[quote="groovemaster"]fprintf schreibst du dort rein, wo die Daten in die Datei geschrieben werden sollen. Also dorthin, wo du jetzt fwrite stehen hast. fscanf ist dann fürs Lesen der Datei zuständig.
[quote="hanna1"]noch ein Problem ich muss ja wenn ich in aendern etwas aendern will den Cursor am Anfang haben[/quote]
Und das Problem wäre...[/quote]Das Problem mit dem Cursor wäre, wenn ich etwas ändern will müsste er auf mgnr. stehen da ich ihn ja nicht rückwärts bewegen kann.
Ich habe alles so geändert wie du gesagt hast aber es ist immer noch nicht richtig jetzt zeigt er es so an stimmt das?
0 Spiekermann_Hubert mIW_eihsfo1_6 0 Menden 00 Spiekermann_Michael mIW_eihsfo1_6 0 Menden 00 Spiekermann_Hubert eHmiekwrge2_9 0 Menden 00 Spiekermann_Klaus lAetanrets_r91 0 Iserlohn/Hemer 0
-
hanna1: Bitte, mach mal den BB-Code an! Ist das denn so schwer? Fragst du dich nicht manchmal selber, warum deine Postings so scheiße aussehen?
Warum die überhaupt noch jemand liest ist mir ein Rätsel!
-
[quote="MaSTaH"]hanna1: Bitte, mach mal den BB-Code an! Ist das denn so schwer? Fragst du dich nicht manchmal selber, warum deine Postings so scheiße aussehen?
Warum die überhaupt noch jemand liest ist mir ein Rätsel![/quote]
Wenn du dir die Mühe gemacht hättest und einwenig zurück gelesen hättest, wäre dir vielleicht aufgefallen das es darum geht, was mein Programm in die Datei schreibt, was leider falsch ist und deshalb beim auslesen falsch angezeigt wird. Und das habe ich gepostet. Diesmal war ich noch sehr höflich das nächste Mal werde dir ich ein paar Zeilen schreiben die du so schnell nicht vergisst
-
Soll ich jetzt Angst haben? Hast du überhaupt gelesen (bzw. verstanden) was ich gesagt habe? Scheinbar nicht, denn der Quote funktioniert immer noch nicht. Gehe mal bitte in dein Profil und stelle die Option "BBCode immer aktivieren:" auf Ja. Wenn du das nicht schaffst dann weiß ich auch nicht... Nach über 50 Posts sollte es dir auch aufgefallen sein, dass die Tags bei dir nicht funktionieren.
-
Btw, ersetze in groovemasters Code alle %i durch %d, dann klappts auch mit den Dateien.
-
hanna1 schrieb:
Ich habe alles so geändert wie du gesagt hast aber es ist immer noch nicht richtig jetzt zeigt er es so an stimmt das?
0 Spiekermann_Hubert mIW_eihsfo1_6 0 Menden 00 Spiekermann_Michael mIW_eihsfo1_6 0 Menden 00 Spiekermann_Hubert eHmiekwrge2_9 0 Menden 00 Spiekermann_Klaus lAetanrets_r91 0 Iserlohn/Hemer 0
Keine Ahnung ob das stimmt. Das kannst du dir nur selbst beantworten. Es sieht aber auf jedenfall schon mal besser aus als vorher. Die PLZ kannst du ja noch entsprechend formatieren, das %i zu %05i ändern. Das einzige was mir noch komisch vorkommt, sind diese Sachen
mIW_eihsfo1_6
Hiess das nicht Im_Wieshof_16? Scheint so, als wären die Bytes geswapped.
-
MaSTaH schrieb:
Btw, ersetze in groovemasters Code alle %i durch %d, dann klappts auch mit den Dateien.
Darf man mal fragen, was sich dann ändern soll? Afaik hat %d exakt die gleiche Bedeutung wie %i.
-
Einen Versuch ist es doch wert. Hatte es zumindest als Quelle für die komischen Zeichen in Betracht gezogen, weil überall dort, wo Zahlen stehen sollten scheinbar Mist steht. Auch vorstellen könnte ich mir, dass die Datei nicht im Textmodus geöffnet wurde. Aber da ich sowieso größtenteils, aus gutem Grund, auf solch vorsintflutliche Funktionen wie fprintf und fscanf verzichte mag ich kein qualifizierter Ansprechpartner für dieses Problem sein.
-
Ich denke, das mit den komischen Zeichen hat sich geklärt. Es lag einfach daran, dass vorher die Daten praktisch 1:1 aus dem Speicher in die Datei geschrieben wurden. Bei Zeichenketten ist das ja kein Problem, bei zB Integer aber schon. Mittlerweile sieht die Ausgabe ja auch ok aus. Lediglich die Daten selbst scheinen nicht zu stimmen.
Und mit Funktionen wie fprintf oder fscanf arbeite ich auch nicht, sondern mach sowas in richtigem C++. Da aber 'eh Funktionen wie fopen benutzt wurden, schien mir das die einfachste Lösung zu sein. Und ohne Code-Tags bekomm ich irgendwie Augenkrebs.
-
[quote="groovemaster"][quote="hanna1"]Ich habe alles so geändert wie du gesagt hast aber es ist immer noch nicht richtig jetzt zeigt er es so an stimmt das?
0 Spiekermann_Hubert mIW_eihsfo1_6 0 Menden 00 Spiekermann_Michael mIW_eihsfo1_6 0 Menden 00 Spiekermann_Hubert eHmiekwrge2_9 0 Menden 00 Spiekermann_Klaus lAetanrets_r91 0 Iserlohn/Hemer 0[/quote]
Keine Ahnung ob das stimmt. Das kannst du dir nur selbst beantworten. Es sieht aber auf jedenfall schon mal besser aus als vorher. Die PLZ kannst du ja noch entsprechend formatieren, das %i zu %05i ändern. Das einzige was mir noch komisch vorkommt, sind diese Sachen
[quote]mIW_eihsfo1_6[/quote]
Hiess das nicht Im_Wieshof_16? Scheint so, als wären die Bytes geswapped.[/quote]Hallo
Ich habe alles mit char deklariert. Jetzt zeigt er alles richtig an wenn ich anzeigen auf rufe. Aber bei der Zeilecin>>suche;
if(suche == STRUKT[i].mgnr) in dieser Zeile zeigt der Compiler den Fehler
expression must be a pointer or a zero constant
hast du eine Ahnung wie ich das ändern muss?
Danke im voraus
-
Bist du dir sicher, dass der Fehler in dieser Zeile steckt? Ich kann daran erstmal nichts falsches erkennen, sofern 'suche' dem Originalcode entsprechend vom Typ int ist.