繁体   English   中英

读取文本文件的最后一行-C编程

[英]Read last line of a text file - C programming

刚开始我仍然是C语言的新手。 这是我打开文件然后将文件行保存到变量中的功能的一部分。 我做了一段时间直到文件结尾,所以我可以得到最后一行,但是没有按预期进行。 因此,我想知道如何从文本文件中获取最后一行? 谢谢。

    tfptr = fopen("trans.txt", "r");
    while (!feof(tfptr)){               
            fscanf(tfptr, "%u:%u:%.2f\n", &combo_trans, &ala_trans, &grand_total);                                              
    }
    fclose(tfptr);  

样本文本文件:

0:1:7.98
1:1:20.97
2:1:35.96
2:2:44.95
2:2:44.95
3:2:55.94

出了什么问题? 你得到另一行吗?

不要使用“&”,因为您不想保存指针。 那可能是失败的原因。

在您的fscanf(tfptr, "%u:%u:%.2f\\n", &combo_trans, &ala_trans, &grand_total); %.2f会引起问题。

printf()不同,您不能在scanf()指定浮点数的精度。 看到这个答案。

因此,不要在scanf格式字符串中使用%f代替%.2f

由于只需要最后一行,因此可以使用fgets()逐行读取文件并保留最后一行。

while( fgets(str, sizeof(str), tfptr)!=NULL );
printf("\nLast line: %s", str);

文件结束(或读取时发生错误)时, fgets()将返回NULL

输入文件中的行被一一读取,并且当没有更多行要读取时, str (适当大小的字符数组)将具有最后读取的行。

然后,您可以使用sscanf()解析str的字符串,例如

sscanf(str, "%u:%u:%f", &combo_trans, &ala_trans, &grand_total);

另外,您应该检查fopen()的返回值以查看文件是否真正打开。 如果发生某些错误, fopen()将返回NULL

if( (tfptr = fopen("trans.txt", "r"))==NULL )
{
    perrror("Error");
}

暂无
暂无

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

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