Обработать неизвестное число строк из файла СИ
Решаю универскую задачку и встал вопрос: а как считать из файла неизвестное число строк исключительно на языке СИ? На с++ таких проблем нет, а вот как это сделать тут? Например, имею следующий код, который перенаправляет поток ввода из консоли в файл:
#include<stdio.h>
#include<stdlib.h>
#include<string>
int main()
{
freopen("input.txt", "r", stdin);
while (true)
{
char buff[100];
scanf("%s", buff);
if (!strlen(buff))//пытаюсь таким образом определить конец файла
break;
}
}
На c++ можно остановить ввод с помощью !file.eof(), есть ли в данном случае сишная альтернатива? Заранее спасибо за ответ!
UPD: нашёл информацию о EOF и в си, но непонятно с чем сравнивать этот макрос в примере, чтоб понять - закончился ли файл.
Ответы (2 шт):
"На c++ можно остановить ввод с помощью !file.eof()" — не стоит этого делать! См. Правильное использование проверки конца файла
Если уж читаете построчно - просто читайте while(fgets(buff,100,file)) { ... }
Почитав некоторое n-ое число статеек всё-таки нашёл способ, как отловить конец файла, используя EOF и scanf:
#include<stdio.h>
#include<stdlib.h>
#include<string>
int main()
{
freopen("input.txt", "r", stdin);
while (true)
{
char buff[100];
if (scanf("%s", buff) == EOF)
break;
}
}