11

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

4

3 回答 3

14

没有功能可以为您提供当前行。但是您可以使用ftell函数从文件开头获取以字符数表示的偏移量。

于 2010-03-28T15:42:40.477 回答
5

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

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 ...
    */
}
于 2010-03-28T15:49:09.383 回答
4

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

如果您想要当前,则必须计算文件开头和位置之间的行终止符序列的数量。做到这一点的最好方法可能是从文件的开头开始,然后简单地向前阅读,直到到达该位置,同时计算行终止符序列。

如果您想要当前行位置(我假设您的意思是当前行的哪个字符),则必须计算紧接该位置之前的行终止符序列与位置本身之间的字符数。

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

于 2010-03-28T15:49:28.963 回答