读取.txt文件C时重复最后一个字符串
这是代码,它从一个文件中读取,然后打印该文件中写入的内容。 我不知道为什么,但文件的最后一个字符串被读取了两次 代码 这是输出:读取.txt文件C时重复最后一个字符串,c,C,这是代码,它从一个文件中读取,然后打印该文件中写入的内容。 我不知道为什么,但文件的最后一个字符串被读取了两次 代码 这是输出: 日期:2017年2月7日星期二21:32:46+0100(CET) 发件人:租金 致:我 消息ID:message2 主题:帕加·阿尔基勒·亚。 亲爱的客户:, 您的付款延迟,请付款或离开! 诚挚的, 房屋租金 房屋租金 我能做些什么来解决这个问题?谢谢。printf(“%s”,buff\u src)正在打印最后一行。在执行while循环后,您还有一个对printf
日期:2017年2月7日星期二21:32:46+0100(CET)
发件人:租金
致:我
消息ID:message2
主题:帕加·阿尔基勒·亚。
亲爱的客户:,
您的付款延迟,请付款或离开!
诚挚的,
房屋租金
房屋租金
我能做些什么来解决这个问题?谢谢。
printf(“%s”,buff\u src)
正在打印最后一行。在执行while
循环后,您还有一个对printf()
的额外调用:
while(fgets(buff_src, sizeof(buff_src), src) != NULL)
{
fputs(buff_src, stdout); // prints each line
}
fclose(src);
printf("%s", buff_src); // prints buff_src which still holds the last line
只要删除对printf()
的这个不必要的调用,它就会像您期望的那样工作。fgets()
逐行读取文件。从fgets()的手册页
如果新行被读取,它将被存储到缓冲区中
当循环失败时,使用最后一个printf
语句打印的buff\u src
包含的内容。使用调试器单步执行程序将快速显示问题所在。为什么代码包含printf(“%s”,buff\u src))代码>?
Date: Tue, 07 Feb 2017 21:32:46 +0100 (CET)
From: Rental <rental@house-rental.com>
To: me <me@upf.edu>
Message-ID: message2
Subject: Paga el alquiler ya.
Dear customer,
you are late in your payment, please pay or LEAVE!
Sincerely yours,
House rental
House rental
while(fgets(buff_src, sizeof(buff_src), src) != NULL)
{
fputs(buff_src, stdout); // prints each line
}
fclose(src);
printf("%s", buff_src); // prints buff_src which still holds the last line
fgets(buff_src, sizeof(buff_src), src) /* read upto New line or EOF from src and store into buff_src */