Как найти текущее положение строки указателя файла в C?

Как я могу получить текущее положение строки указателя файла?

11
задан codaddict 14 September 2010 в 03:58
поделиться

3 ответа

Нет функции для получения текущей строки; вам придется следить за этим самостоятельно. Примерно так:

FILE *file;
int c, line;

file = fopen("myfile.txt", "rt");
line = 0; /* 1 if you want to call the first line number 1 */
while ((c = fgetc(file)) != EOF) {
    if (c == '\n')
        ++line;
    /*
        ... do stuff ...
    */
}
5
ответ дан 3 December 2019 в 04:52
поделиться

Не существует функции, которая дает текущую строку. Но вы можете использовать функцию ftell для получения смещения в количестве символов от начала файла.

14
ответ дан 3 December 2019 в 04:52
поделиться

Вам нужно использовать ftell, чтобы определить позицию в файле.

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

Если вам нужна текущая позиция строки (я полагаю, вы имеете в виду, на каком символе текущей строки вы находитесь), вам придется подсчитать количество символов между последовательностью терминатора строки, непосредственно предшествующей позиции, и самой позицией.

Лучший способ сделать это (поскольку чтение назад не так удобно) - использовать fseek для резервного копирования чанка за раз от позиции, прочитать чанк в буфер, затем найти последнюю последовательность терминатора строки в чанке, вычислив разницу между этой точкой и позицией.

4
ответ дан 3 December 2019 в 04:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: