C: Problem mit fgetc

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

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

Vielen Dank! Problem gelöst! (ohne Inhalt)
.