fgets
-
Hi
Ich lese eine Zeile aus einer Datei ein mit fgets!
fgets(zeile,256,file);
Ich habe dort einfach mal 256 eingetragen!
Das ist ja die maximale Anzahl an Zeichen die er einlesen soll!Nun meine Frage kann man irgendwie abfragen wie lang eine aktuelle Zeile ist???
-
einfach mit strlen(). fgets hängt eine 0 dran.
-
Hallo!
fgets liest maximal 256 Zeichen ein oder bis zum ersten Auftreten von '\n'.
Zeh Mau :xmas1:
strlen(fgets(zeile,256,pfile)); geht auch
-
Zeh Mau schrieb:
strlen(fgets(zeile,256,pfile)); geht auch
das ist besonders toll, wenn 'fgets' 0 zurückgibt.
-
Milzbrand schrieb:
Zeh Mau schrieb:
strlen(fgets(zeile,256,pfile)); geht auch
das ist besonders toll, wenn 'fgets' 0 zurückgibt.
Null ist Null, oder? :xmas1:
-
Anzahl <-> Adresse -> null != null
-
Zeh Mau schrieb:
Null ist Null, oder?
mach doch mal 'strlen(0)'
-
Zeh Mau schrieb:
Null ist Null, oder? :xmas1:
Ja, Null ist Null, aber Eins ist auch Eins. Was wolltest du damit sagen?
BTW: strlen(fgets(...)) ist böse, wenn fgets NULL zurückliefert, gibt es erstmal ne Segfault.
-
[quote="supertux"]
Zeh Mau schrieb:
Ja, Null ist Null, aber Eins ist auch Eins. Was wolltest du damit sagen?
Ich wollte damit sagen, dass auch wenn Null zurückgeliefert wird, ich eben einen Zeiger auf die Adresse NULL habe und dann wird eigentlich solange von dort gelesen, bis zum ersten '\0'.
Zeh Mau
-
Zeh Mau schrieb:
Ich wollte damit sagen, dass auch wenn Null zurückgeliefert wird, ich eben einen Zeiger auf die Adresse NULL habe und dann wird eigentlich solange von dort gelesen, bis zum ersten '\0'.
Kurze Antwort: Nein, kannst Du nicht. Nullzeiger repräsentieren keine gültige Adresse und folglich ist das Lesen undefiniert.
(Übrigens: Wegen solchem Glauben hatten wir bei einer Umstellung von HP auf Linux hunderte Programmstellen wo sowas gemacht wurde. Nur leider geht das bei Linux nicht mehr. Hätte man sich vorher informiert hätte man das auch auf HP gleich gelassen.)
-
Nur durch Brüller lernt der Mensch dazu.
:xmas2:
Danke für den Hinweis,
entschuldigung für die Fehlinfo