繁体   English   中英

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

[英]How to find the current line position of file pointer in C?

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

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM