Как я могу получить текущую позицию строки указателя файла?
Как найти текущую позицию строки указателя файла в C?
Ответ 1
Нет функции, которая дает вам текущую строку. Но вы можете использовать ftell функцию, чтобы получить смещение в терминах количества char от начала файла.
Ответ 2
Нет функции для получения текущей строки; вам придется следить за ней самостоятельно. Что-то вроде этого:
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 ...
*/
}
Ответ 3
Вам нужно использовать ftell, чтобы указать позицию в файле.
Если вам нужна текущая строка, вам нужно будет подсчитать количество последовательностей терминаторов строк между началом файла и позицией. Лучший способ сделать это - это, вероятно, начать с начала файла и просто читать вперед, пока не дойдете до позиции, подсчитав последовательности терминаторов линии, когда вы идете.
Если вы хотите, чтобы текущая позиция линии (я предполагаю, что вы имеете в виду, какой символ текущей линии вы находитесь), вам нужно будет подсчитать количество символов между последовательностью терминатора линии непосредственно перед позицией, а позиция сам по себе.
Лучший способ сделать это (поскольку чтение назад не так удобно) заключается в использовании fseek для резервного копирования фрагмента на время от позиции, прочитайте кусок в буфер, затем найдите последнюю строку терминатора последовательности в куске, вычисляя разницу между этой точкой и позицией.