如何在C中找到文件指针的当前行位置?

时间:2010-03-28 15:40:23

标签: c file pointers file-io file-pointer

如何获取文件指针的当前行位置?

3 个答案:

答案 0 :(得分:14)

没有功能可以为您提供当前行。但是你可以使用ftell函数来获取文件开头的char数量的偏移量。

答案 1 :(得分:4)

没有获取当前行的功能;你必须自己跟踪它。像这样:

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 ...
    */
}

答案 2 :(得分:4)

您需要使用ftell为您提供文件中的位置。

如果您想要当前的,则必须计算文件开头和位置之间的行终止符序列的数量。最好的方法是从文件的开头开始,然后向前读取,直到你到达该位置,然后计算行终止符序列。

如果你想要当前的行位置(我假设你指的是当前行的哪个字符),你必须立即计算行终止符序列之间的字符数在该位置之前,以及该位置本身。

这样做的最佳方法(因为向后阅读并不方便)是使用fseek从位置一次备份一个块,将块读入缓冲区,然后找到最后一行块中的终止符序列,计算该点与位置之间的差异。