Есть ли функция получения количества строк в файловом потоке на C?

#c #file

#c #file

Вопрос:

Прямо сейчас я делаю домашнее задание, в котором мне нужно прочитать .csv — файл с разными лотерейными подсказками. Прямо сейчас мне нужно проверить, действительно ли существует номер подсказки / если он действителен. (Это допустимо, если число больше или равно 0, и если оно меньше или равно наибольшему числу подсказок).

Это то, что я бы сделал:

 bool is_tip_number_valid(int tip_number){
    if(tip_number < 0){
        return false;
    }
}
 

конечно, в if-условии мне нужно проверить, больше ли число подсказок, чем количество строк в csv.
Есть ли какой-либо способ получить строки в csv?
Я думал, что могу просто запустить весь файловый поток с помощью цикла, но для этого потребуется очень много времени, потому что csv содержит около 500000 строк.

Комментарии:

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

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

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