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后能看到输入的字符和好多屯字。是不是证明字符已经成功写入文件了呢?
如果改成写入字符后关闭文件,读文件时再打开可以运行成功。 展开
# 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后能看到输入的字符和好多屯字。是不是证明字符已经成功写入文件了呢?
如果改成写入字符后关闭文件,读文件时再打开可以运行成功。 展开
3个回答
展开全部
需要先关闭文件 字符才能正常存入文件中
编程有时会出现"烫"和"屯"的错误,"烫"是未初始化的栈空间,"屯"是申请后未做过内存清零或COPY的堆内存.写入文件是"屯",则需要找下你申请的内存是不是没经过内存复制而直接写入文件里了
编程有时会出现"烫"和"屯"的错误,"烫"是未初始化的栈空间,"屯"是申请后未做过内存清零或COPY的堆内存.写入文件是"屯",则需要找下你申请的内存是不是没经过内存复制而直接写入文件里了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
# 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;
}
# 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;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
上次写完后,加一个fflush()
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询