Почему для чтения нескольких строк текста с помощью fgets нам нужно установить fgets ()! = NULL? - PullRequest
0 голосов
/ 23 января 2019

Если бы я хотел прочитать несколько строк из текста с fgets, и в соответствии с моим текстовым блоком, я бы сделал что-то вроде этого:

 char str[53];
 ...
 while(fgets(str, max, f)!=NULL){
   ...
 }

Если str это просто строкаn символов строки, как программа читает вторую строку?Согласно документации, не должен ли цикл останавливаться, когда он достигает конца строки?

fgets Считывает символы из потока и сохраняет их как строку C в str до (num-1) символы были прочитаны или достигнут либо символ новой строки, либо конец файла, в зависимости от того, что произойдет раньше.

1 Ответ

0 голосов
/ 23 января 2019

Согласно документации:

В случае успеха функция возвращает str.Если при попытке прочитать символ обнаружен конец файла, устанавливается индикатор eof (feof).Если это происходит до того, как какие-либо символы могут быть прочитаны, возвращаемый указатель является нулевым указателем (и содержимое str остается неизменным).Если происходит ошибка чтения, устанавливается индикатор ошибки (ferror) и также возвращается нулевой указатель (но содержимое, указанное str, возможно, изменилось).

str - это буфер, который вы указали какПервый аргумент.Если fgets закончит чтение, возвращается NULL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...