gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:39:38 25 4
gpt4 key购买 nike

我还是个 C 新手,因为我刚刚开始。这是我的函数的一部分,用于打开文件,然后将文件行保存到变量中。我做了 while 循环直到文件末尾,这样我就可以获得最后一行,但是它没有按预期进行。所以,我想知道如何从文本文件中获取最后一行?谢谢。

    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() 中指定 float 的精度。请参阅this回答。

因此,请仅使用 %f,而不是 scanf 格式字符串中的 %.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");
}

关于c - 读取文本文件的最后一行 - C 编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46980032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com