这两个程序的区别在哪里呀?

pengpeng5047 2008-06-14 11:47:39
我要从键盘输入几个字母,写入一个文件,并从文件中读出数据显示在屏幕上。
#include<stdio.h>
#include<stdlib.h>
void main(){
FILE *fp;
char c;
if((fp=fopen("d:\\123.txt","w+"))==NULL){
printf("can not open file!");
exit(0);}
c=getchar();
while(c!='\n'){
fputc(c,fp);
c=getchar();}
rewind(fp);
while(!feof(fp))
printf("%c",fgetc(fp));
fclose(fp);
}

我输入:liupeng这个程序在屏幕上输出liupeng后还另外多了一个空格。我做如下更改:
#include<stdio.h>
#include<stdlib.h>
void main(){
FILE *fp;
char c;
if((fp=fopen("d:\\123.txt","w+"))==NULL){
printf("can not open file!");
exit(0);}
c=getchar();
while(c!='\n'){
fputc(c,fp);
c=getchar();}
rewind(fp);
c=fgetc(fp);
while(!feof(fp)){
printf("%c",c);
c=fgetc(fp);}

fclose(fp);
}

这个程序输出liupeng后没有空格。这是为什么呢?
...全文
88 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yeyucheng1988 2010-01-08
  • 打赏
  • 举报
回复
9零成本创业,不需要一分钱的投入,不用拉下线,每天只要挂机2小时,
就能赚取150元以上,一般不会超过300元。满150元日付。
详情请登陆:http://www.qianse2009.cn/
yeyucheng1988 2010-01-08
  • 打赏
  • 举报
回复
8零成本创业,不需要一分钱的投入,不用拉下线,每天只要挂机2小时,
就能赚取150元以上,一般不会超过300元。满150元日付。
详情请登陆:http://www.qianse2009.cn/
yeyucheng1988 2010-01-08
  • 打赏
  • 举报
回复
7零成本创业,不需要一分钱的投入,不用拉下线,每天只要挂机2小时,
就能赚取150元以上,一般不会超过300元。满150元日付。
详情请登陆:http://www.qianse2009.cn/
iu_81 2008-06-15
  • 打赏
  • 举报
回复
fgetc返回EOF
是由函数返回的而不是读文件得到的
EOF标志并不写在文件内
pengpeng5047 2008-06-15
  • 打赏
  • 举报
回复
呵呵,我用的是vc++6.0.你运行的结果一样吗?
zbing0203 2008-06-15
  • 打赏
  • 举报
回复
第一种最后输出的其实不是空格 而是文件结束符-1 因为fgetc返回的是当前读入的字符 当读到文件结束时 会返回-1 这时你是先输出-1 然后while才退出
而第二种才是正确的读法
太乙 2008-06-15
  • 打赏
  • 举报
回复
呵呵~~怎么?楼主用的啥编译器??
运行环境是啥??
我这没问题啊~!
第二个程序会输出空格~!没问题呢~

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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