fgets не возвращает NULL, если новая строка не найдена - PullRequest
1 голос
/ 01 декабря 2010

ну, я использую цикл while:

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

в других классах это работает нормально, но в одном из них, когда я читаю из файл строка за строкой, он не выйдет из цикла даже после окончания строки, я видел это в отладчике.

почему это? и это работало даже в этом классе раньше, и теперь я не знаю, почему он продолжает приносить пустые строки до тех пор, пока не сломается ..

есть идеи?

Ответы [ 2 ]

3 голосов
/ 01 декабря 2010

fgets в стандартной функции ANSI C, см. Документацию: здесь fgets читает макс.1023 символа до следующего '\ n' или EOF.Длина ваших строк превышает 1023 символа или последняя строка не имеет завершающей строки.

0 голосов
/ 21 декабря 2012

Вы можете уловить проблему \ n, поместив что-то подобное в свой цикл while.

if ((int) strlen (pclientRow) == 1) break;

...