2010-11-30 4 views
1

Eh bien, je suis en utilisant en boucle:fgets DonT retour NULL si aucune nouvelle ligne trouvé

while (! Fgets (pclientRow, 1024, f) = NULL)

dans d'autres classes, il fonctionne bien, mais dans l'un d'eux, quand je lis à partir de fichier par ligne, il ne sortira pas de la boucle, même lorsque les lignes se terminent, je l'ai vu dans le débogueur.

pourquoi c'est? et il travaillait même dans cette classe avant et maintenant je ne sais pas pourquoi il continue à apporter lignes vides jusqu'à ce qu'il crshing ..

une idée?

+0

Publier du code. Notez également que C n'a pas de classes. – user502515

+0

Quelles sont les valeurs de 'feof (f)', ferror (f) ', et' errno' (Unix)/'GetLastError()' (Windows) dans l'état où le fichier aurait dû se terminer mais fgets ne retourne pas NUL? – zwol

+0

Il serait également utile de connaître la taille du fichier en cours de lecture (à la fois en octets et en lignes) et de savoir exactement ce qui se passe lorsqu'il se bloque. – zwol

Répondre

3

fgets dans une fonction ANSI C standard, voir documentation: Ici, fgets read max. 1023 caractères jusqu'à '\ n' ou EOF suivant. Vos lignes dépassent 1023 caractères ou la dernière ligne n'a pas de saut de ligne final.

0

Vous pourriez attraper le problème \ n en plaçant quelque chose comme ceci dans votre boucle while.

si ((int) strlen (pclientRow) == 1) rompre;

Questions connexes