fputs()的内容写不进去

diewithoutwings 2012-06-27 03:41:25
每次运行完程序之后,查看txt文件都是空的,fputs()函数的内容都没有写进去

是不是必须要执行fclose()之后,fputs的内容才会出现在txt文件里啊?

我的程序fputs()是在一个while(true)的死循环里,所以就无法执行fclose()函数
...全文
1837 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2012-06-27
  • 打赏
  • 举报
回复
写不进去很可能是没有执行到fclose();没有将内容保存到磁盘文件中。
0c0c0f 2012-06-27
  • 打赏
  • 举报
回复
Write a string to a stream.
int fputs( const char *string, FILE *stream );
Return Value

Each of these functions returns a nonnegative value if it is successful. On an error, fputs returns EOF, and fputws returns WEOF.

Parameters

string

Output string

stream

Pointer to FILE structure

只要函数被调用了,就写入了文件中


笨蛋糕 2012-06-27
  • 打赏
  • 举报
回复
不懂,但围观虚心学习
bsnry 2012-06-27
  • 打赏
  • 举报
回复
程序会推出吗???




[Quote=引用 4 楼 的回复:]
我是了一下,可以写进去啊

C/C++ code

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
FILE* file=fopen("a.txt","w");//如果使用"r"需要文件一开始就存在
if(file==NULL) {
printf("open file failed\n");
……
[/Quote]
diewithoutwings 2012-06-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

打开一个文件,会自动产生文件缓冲,缓冲的作用是降低磁盘IO,提升性能
fputs fwrite 将数据写到文件缓冲中,若缓冲满,则会自动将数据同步到硬盘上去
fflush 强行将缓冲中的数据同步到硬盘上去
fclose 文件关闭前,会自动将缓冲中数据同步到硬盘

若要实时将数据写硬盘,在fputs fwrite后调用fflush
但这必然会导致磁盘IO上升,可能会影响性能,折中点,可……
[/Quote]
while(true)外面的可以正常打出来,while(true)内部刚开始的时候的一个fputs可以打出来,但是是乱码,其他的就打不出来比如这三行连着的代码:
printf("%s <Buffer Full>",KeyBuffer);
fputs(KeyBuffer,record2);
fputs(KeyBuffer,record1);
printf可以打出来,fputs却打不出来
用fflush也没用
xuxinmmy 2012-06-27
  • 打赏
  • 举报
回复
打开一个文件,会自动产生文件缓冲,缓冲的作用是降低磁盘IO,提升性能
fputs fwrite 将数据写到文件缓冲中,若缓冲满,则会自动将数据同步到硬盘上去
fflush 强行将缓冲中的数据同步到硬盘上去
fclose 文件关闭前,会自动将缓冲中数据同步到硬盘

若要实时将数据写硬盘,在fputs fwrite后调用fflush
但这必然会导致磁盘IO上升,可能会影响性能,折中点,可以定期调用一次。
当然,如果不是性能要求很高的,那可以随便调
tongzhipeng5699 2012-06-27
  • 打赏
  • 举报
回复
我是了一下,可以写进去啊

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
FILE* file=fopen("a.txt","w");//如果使用"r"需要文件一开始就存在
if(file==NULL) {
printf("open file failed\n");
exit(-1);
}
char buf[]="abcd";
while(1) {
fputs(buf,file);
}
fclose(file);
return 0;
}
ouyh12345 2012-06-27
  • 打赏
  • 举报
回复
楼主没机会调用fclose吗?这样不行的,会有资源泄露
diewithoutwings 2012-06-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

可以在循环中主动用fflush将缓冲区的内容更新到文件中去。
[/Quote]
是因为fclose没有执行所以没写进去么???
图灵狗 2012-06-27
  • 打赏
  • 举报
回复
可以在循环中主动用fflush将缓冲区的内容更新到文件中去。

65,176

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧