Hallo zusammen!
ich muss aus einer Datei Int-Zahlen einlesen, und ich hab auch
einen Code dazu der wie folgt aussieht:
int holi(void) {
l = 0;
do {
wort[l] = (unsigned char) fgetc(kolp);
l++;
} while ((wort[l-1] != 9) && (wort[l-1] != 10));
wort[l-1] = NULL;
return (atoi(wort));
}
Kann mir jemand erklären, was das Abbruchkriterium bedeuten
soll?
Das bricht die Bearbeitung bei einem Tab oder Linefeed ab.
Allgemein gesagt ist der Code in der Kategorie „erschießt den Verfasser“ anzusiedeln.
und die Bedeutung des Nullzeigers? Und wie kann ich diesen
Code erweitern dass er auch float Zahlen einliest?
Das mit dem Nullzeiger ist Schwachsinn. Da müsste stehen „… = 0“, es funktioniert halt irgendwie doch, weil der Compiler den Wert NULL (in C irgendwas wie (void*)0, in C++ einfach nur 0) in was gültiges casten kann.
Der Code sollte so ziemlich alles einlesen bis zum ersten Tab oder Linefeed, und ist nicht sonderlich gut. Was ist zB, wenn das Array „wort“ zu klein ist? Schau dir besser Funktionen wie atoi, atof oder strtol/strtod an, die von einer vorliegenden Zeichenkette direkt in einen brauchbaren Datentyp einlesen ohne dass du so eine redundante Grütze machen musst. Das hört sich gemein an, ist aber leider so. Es gibt den ganzen Kram schon, und man kann es in den meisten Fällen nur schlechter machen.