2014-10-31 2 views
1

Я читаю файл и хочу сохранить номер строки в определенном состоянии.Получить номер строки файла

Я знаю, что fgets используется для чтения строки, есть ли способ сохранить/получить номер строки, где находится курсор.

+1

Что вы подразумеваете под * курсором *? Если это указатель на файл, использование счетчика строк, когда вы читаете с помощью 'fgets()', достаточно? –

+0

Предположим, 'if (strncmp (ioarea," ABC ", 3) == 0)' в этом состоянии я хочу сохранить номер строки. счетчик дает мне счет «ABC» в файле, но не номер строки «ABC» – Aravind

+0

на каждом fgets() увеличивает счетчик (который начинается с 0), а затем проверяет условие. если условие истинно, то сохраните номер строки. – user3629249

ответ

4

Нет курсора в контексте стандартного потока файлов. Существует указатель на файл, но не курсор. Курсор представляет собой концепцию драйвера консоли/терминала. Даже с указателями файлов вы обычно не используете их в линейном режиме, они предназначены для доступа к произвольному доступу/двоичному типу. Вы можете искать начало и конец файла в текстовом режиме. Но fseek не является «строкой или курсором», поэтому не используйте его.

Вам просто нужно отслеживать количество строк, которые вы прочитали, с целым числом.

int line = 0; 
while((fgets(...)) != NULL) { 
    line++; 
    ... 
    if(...) { 
     // store line number wherever you need it 
     printf("found at line %d\n", line);  
    } 
} 
Смежные вопросы