使用C,有没有办法只读取文件的最后一行而不循环它的全部内容?
问题是该文件包含数百万行,每行都包含一个整数(long long int)。文件本身可能非常大,我想甚至高达 1000mb。我确信最后一行不会超过 55 位,但也可能只有 2 位。使用任何类型的数据库都没有选择......我已经考虑过了。
也许这是一个愚蠢的问题,但来自 PHP 背景的我发现很难回答。我到处找,但没有找到干净的东西。
目前我正在使用:
if ((fd = fopen(filename, "r")) != NULL) // open file
{
fseek(fd, 0, SEEK_SET); // make sure start from 0
while(!feof(fd))
{
memset(buff, 0x00, buff_len); // clean buffer
fscanf(fd, "%[^\n]\n", buff); // read file *prefer using fscanf
}
printf("Last Line :: %d\n", atoi(buff)); // for testing I'm using small integers
}
这样我循环文件的内容,一旦文件变得大于〜500k行,事情就会变慢......
先感谢您。格言