当我们使用文本方式打开一个文本文件读取时,就不应该再使用ftell, fseek函数,因为这2个函数只适合于二进制模式 ,在文本模式下会因为系统的不同而产生不同的结果。
典型的文本方式打开比如:
FILE *fp = fopen("test.txt", "r");
FILE *fp2 = fopen("test2.txt", "rt");
尝试在windows和linux编译并运行下面的测试程序,这个简单的程序就是从一个文本文件里,每次读取一个字符出来,并用ftell获取当前的位置:
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp = fopen("test.txt", "rt");
char buffer[2];
int cur;
for(int i = 0; i < 5; i++)
{
fgets(buffer, sizeof(buffer), fp);
cur = ftell(fp);
printf("read:%s cur:%d\n", buffer, cur);
}
fclose(fp);
return 0;
}
要处理的文本文件内容为:
hello_world
请