Обработать неизвестное число строк из файла СИ

Решаю универскую задачку и встал вопрос: а как считать из файла неизвестное число строк исключительно на языке СИ? На с++ таких проблем нет, а вот как это сделать тут? Например, имею следующий код, который перенаправляет поток ввода из консоли в файл:

#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 шт):

Автор решения: Harry

"На 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;
    }
}
→ Ссылка