C语言一个关于文件读写的小程序 20

#include<stdio.h>#include<stdlib.h>intmain(void){FILE*fp;charch;if((fp=fopen("test.tx... # include <stdio.h>
# include <stdlib.h> int main(void)
{
FILE *fp;
char ch; if( (fp = fopen("test.txt", "w+")) == NULL )
{
printf("Cannot open file!\n");
exit(1);
}
printf("请输入字符:");
while( (ch=getchar()) != '\n')
putc(ch,fp);

while( (ch=getc(fp)) != EOF )
putchar(ch);

fclose(fp);

return 0;
}

如题,输出结果是好多‘屯’字。没有输入的字符。
我想可能是因为写入字符后没有关闭文件,所以输入的字符还在缓冲区。但是输出为啥有那么多屯字呢?
而且打开test.txt后能看到输入的字符和好多屯字。是不是证明字符已经成功写入文件了呢?

如果改成写入字符后关闭文件,读文件时再打开可以运行成功。
展开
 我来答
恋★殇
2012-09-16 · TA获得超过167个赞
知道答主
回答量:122
采纳率:0%
帮助的人:82万
展开全部
需要先关闭文件 字符才能正常存入文件中
编程有时会出现"烫"和"屯"的错误,"烫"是未初始化的栈空间,"屯"是申请后未做过内存清零或COPY的堆内存.写入文件是"屯",则需要找下你申请的内存是不是没经过内存复制而直接写入文件里了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ANDLANDWO
2012-09-16 · TA获得超过181个赞
知道小有建树答主
回答量:168
采纳率:0%
帮助的人:131万
展开全部
# include <stdio.h>
# include <stdlib.h>
int main(void)
{
FILE *fp;
char ch;
if( (fp = fopen("test.txt", "w+")) == NULL )
{
printf("Cannot open file!\n");
exit(1);
}
printf("请输入字符:");
while( (ch=getchar()) != '\n')
putc(ch,fp);
rewind(fp); // 加上这条,使文件内部指针重新指向文件的开始
while( (ch=getc(fp)) != EOF )
putchar(ch);
fclose(fp);
return 0;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
suiyue_2009
2012-09-16 · TA获得超过846个赞
知道小有建树答主
回答量:1248
采纳率:0%
帮助的人:884万
展开全部
上次写完后,加一个fflush()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式