Выдать ошибку, если чтение пошло за концом файла - C (СИ)
Формулировка задачи:
из файла считывается несколько строк, пускай 5
если ф файле например только 4 строки, то нужно вывести ошибку, через иф.
я так понимаю должно быть что-то типа:
if (eof(fp)) ...
Решение задачи: «Выдать ошибку, если чтение пошло за концом файла»
textual
Листинг программы
...
FILE * f;
char buf[BUFSIZ];
int i;
...
for ( i = 0; i < 5; ++i ){
if ( ! fgets(buf, BUFSIZ, f) ){
fprintf(stderr, "Unexpected end of file!\n");
fclose(f);
return 1;
}
/* обработать считанную строку */
}
...
Объяснение кода листинга программы
- Объявлены необходимые переменные: FILE * f; char buf[BUFSIZ]; int i;
- Задаётся цикл, который выполняется 5 раз: for ( i = 0; i < 5; ++i ){
- В каждой итерации цикла происходит проверка: считывает ли функция fgets строку из файла в буфер buf. if ( ! fgets(buf, BUFSIZ, f) ){
- Если функция fgets вернула 0 (что означает, что строка не была полностью прочитана), то выводится сообщение об ошибке:
fprintf(stderr,
Unexpected end of file!\n); - Закрывается файл f с помощью функции fclose. fclose(f);
- Возвращается 1. return 1;
- После каждой итерации цикла выполняется обработка считанной строки. / обработать считанную строку /
- В конце цикла переменная i выводится на экран. ...