Anonym
14. September 2001 um 11:20
1
Hallo,
ich lesen eine ASCII-Datei aus mit
koordinaten=fopen("koordinaten.dat", "r");
while (fgetc(koordinaten) != EOF)
{
koord\_string[koord\_length] = fgetc(koordinaten);
koord\_length += 1;
}
Wenn ich mir nachher das Ausgelesene anzeigen lassen möchte:
printf("Koordinaten: %s\n", koord\_string);
Bekomme ich nur bizarre Sonderzeichen angezeigt.
Hat jemand eine Idee, woran das liegen kann?
Bin für jede Tip dankbar!
Viele Grüße,
Michl
wie kommt den koord_string zustande ?
Vergessen zu allocieren ?
Speicher vorher mal löschen wenn Sonderzeichen angehängt werden.
Gruß
Micha
Anonym
14. September 2001 um 14:33
3
Hallo Micha,
ganz am Anfang
char koord\_string[] = "";
das sollte doch reichen?
Michl
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo,
das geht schief, weil Du in der Schleife 2x fgetc() aufrufst. Zum einen prüfst Du so nur jedes zweite Zeichen auf EOF und hast eine 50%-Chance, das Dateiende zu übersehen (deswegen Sondermüll in der Ausgabe?), zum anderen kommt natürlich auch nur jedes zweite Zeichen in Deinen koord_string.
char c = fgetc(koordinaten);
while (c != EOF)
{
koord\_string[koord\_length] = c;
koord\_length += 1;
c = fgetc(koordinaten);
}
Grüße, Ralf
Nein, reicht nicht!
Du musst zuvor Speicher für die Daten anlegen. Das macht C so nicht.
Wenn Du 100 Bytes brauchst geht das zb mit variable[100] oder mit malloc.
Du schreibst Daten irgendwo in Speicher der Dir nicht gehört.
Ist gefährlich und wie Du siehst kommt nischt bei raus.
Schau mal bei maloc oder new nach wie man Speicher reservieren kann.
Gruß
Micha
Anonym
14. September 2001 um 17:19
6
Vielen Dank! Problem gelöst! (ohne Inhalt)
.