Как прочитать файл до предпоследней строки

#c #file #scanf

#c #файл #scanf

Вопрос:

Я пытаюсь прочитать файл, указанный в следующем формате привет

 {

    1--2
    2--3
    3--4

}
 

Я хочу использовать только целые числа, указанные в файле, и для этого я использую следующий код

 while(fscanf(fp, "%d--%d", amp;a, amp;b) != EOF)
    {   // do something here}
 

Проблема в том, что это не работает, потому что он переходит в бесконечный цикл после чтения первой строки, и если я удаляю первую строку, он переходит в бесконечный цикл в последней строке , где он читается } .
Итак, как можно сделать это надлежащим образом?

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

1. Почему я получил отрицательный голос, кто-то может запросить дополнительную информацию.

2. @пользователь1492793 stackoverflow.com вызывает психотические наклонности у долгосрочных пользователей :-)… серьезно, немного погуглив или почитав, вы могли бы это понять.

Ответ №1:

Если все остальное не удается, RTFM: fscanf: «Эта функция возвращает количество входных элементов, успешно сопоставленных и назначенных, которое может быть меньше, чем предусмотрено, или даже равно нулю в случае раннего сбоя сопоставления». Между тем, EOF=-1, хотя в некотором стандартном формате.h заголовочных файлов на некоторых платформах это может быть равно нулю. Вы можете либо проверить, что fscanf возвращает 0, либо использовать feof(fp) для проверки того, что достигнут конец файла.