如何用C语言读取txt文档中最后一行数据

如何用C语言读取txt文档中最后一行数据,请写出大概代码!!
自己想的:
int i,pp=1;
int totalnumber=0; //文件中double数总个数
FILE *fp;
char mm;

fp = fopen(txtname,"rt");
fseek (fp, -100L, SEEK_END); //文件指针 重新指向文件尾 -100指针指向最后倒数100字节处,保存的行数应该没有100个9这个大。
do
{
fscanf(fp,"%c",&mm); //逐行扫描
}
while(mm!='\n'); //判断倒数第二行的换行符
fscanf(fp,"%ld",&LINE); //输出最后一行数字
fclose(fp);

如果想自由地读取txt文档任意位置,就只能使用随机读写数据文件的方式来读与写的操作。因为C语言里的随机读写数据文件提供了 “文件位置标记”和定位的相关函数。
例如:
rewind函数使文件位置标记指向文件开头
fseek函数改变文件位置标记,其中该函数的原型为:
fseek(文件类型指针,位移量,起始点);
如果仅仅是想读取文件末尾一行数据,只需把起始点定位到文件末尾,位移量为负数代表向后挪的意思。
如:
fseek(fp,-100L,SEEK_END); // 文件游标定位到文件末尾处,然后向后退100个字节。
紧接着就是读取了:
fread(buffer,100,1,fp);
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-06
关于这个问题,本人也没有什么好的方法。
提个建议:首先将后100个字符读入数组,内存访问肯定比文件访问要快
就是这块:
do
{
fscanf(fp,"%c",&mm); //逐行扫描
}
while(mm!='\n'); //判断倒数第二行的换行符

另外若想改进,个人感觉文件的磁盘访问本身就很慢,可以考虑在文件不大时直接用一些内存操作来自:求助得到的回答本回答被提问者和网友采纳
第1个回答  2012-12-06
char a[MAXN] = "", *p;
int ch;
p = a;

while( (ch = getchar()) != EOF )
{
if( ch != '\r' )
{
*p++ = ch;

}
else
{
p = a;

}

}
没有测试过
相似回答