这是代码,它从文件读取然后打印在该文件中写入的内容。 我不知道为什么,但文件的最后一个字符串被重复两次。
代码
FILE* src = fopen(name_email_src, "r");
if (src == NULL)
{
printf("ERROR source file not found");
}
while(fgets(buff_src, sizeof(buff_src), src) != NULL)
{
fputs(buff_src, stdout);
}
fclose(src);
printf("%s", buff_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
我该怎么做才能解决这个问题?谢谢。
答案 0 :(得分:2)
printf("%s", buff_src);
正在打印最后一行。
答案 1 :(得分:0)
在printf()
循环后,您需要额外拨打while
:
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()
的不必要的调用,它就会按预期运行。
答案 2 :(得分:0)
fgets()
从文件中逐行读取。来自fgets()
如果读取换行符,则将其存储到缓冲区中。
fgets(buff_src, sizeof(buff_src), src) /* read upto New line or EOF from src and store into buff_src */
当循环失败时buff_src
包含使用上一个printf
语句打印的内容。