有关文件操作的问题

yjking 2004-02-02 08:34:14
#include<stdio.h>
main()
{
FILE *fp;
char ch,filename[10];
scanf("%s",filename);
if((fp=fopen("filename","w"))==NULL)
{
printf("cannot open this file!\n");
exit(0);
}
ch=getchar();
while(ch!='#')
{
fputc(ch,fp);
putchar(ch);
ch=getchar();
}
fclose(fp);
}

程序中有两处ch=getchar();
第一个的作用是接收scanf后的回车符还是接收输入的第一个字符?
第二个的作用是什么?为什么如果没有第二个编译也能通过但不能执行?
请各大侠指点
...全文
58 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
junnyfeng 2004-02-02
  • 打赏
  • 举报
回复
以下的功能是把逐个键盘输入的字符送到打开的文件中,并以“#”为结束标志
ch=getchar(); // 接收第一个字符
while(ch!='#')
{
fputc(ch,fp);
putchar(ch);
ch=getchar(); // 循环接收字符

}
EricZhuo 2004-02-02
  • 打赏
  • 举报
回复
两个功能一样。都是接受字符,关键把流程搞清楚.
nasi00 2004-02-02
  • 打赏
  • 举报
回复
你可看好了,一个getchar()在while外面,一个在里面,就是说相当于
do {
ch=getchar();
} while(ch!='#');

意思是getchar()至少执行一次,如果ch不是'#'的时候,就继续读,读到是为止。

70,037

社区成员

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

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