| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4892 人关注过本帖
标题:[求助]用Scanf输入完字符串之后,为什么要处理一下后面的回车符?
取消只看楼主 加入收藏
Quill
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-1-4
收藏
 问题点数:0 回复次数:1 
[求助]用Scanf输入完字符串之后,为什么要处理一下后面的回车符?
  在谭浩强的《C程序设计第三版》里,在对fputc和fgetc两个函数进行应用举例的时候,用到下面一个例子:
#include<stdio.h>
#include<stdlib.h>
void main()
{
FILE *fp;
char ch,filename[10];
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL)
{
printf("Can't open file\n");
exit(0);
}
ch=getchar();/*此语句用来接收执行Scanf语句时最后输入的回车符*/
ch=getchar();
while(ch!='#')
{
fputc(ch,fp);
putchar(ch);
ch=getchar();
}
putchar(10);
fclose(fp);
}
其他的注释我都先省略掉了,我不明白为什么还要用这样一条语句接收这个回车。小弟才疏学浅,一直认为程序执行到某个地方等待用户的响应,回车符是让机子接收用户响应的一个标志,在这里怎么又成了一个字符了?如果它是一个字符,为什么在其他地方用scanf的时候没有多出这么一句?为什么像getchar这样的函数不需要再这样专门接收一下回车符?
  等待高手的解释,在这里先谢过了!
搜索更多相关主题的帖子: Scanf 字符 回车 输入 
2007-01-05 00:42
Quill
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-1-4
收藏
得分:0 

我还有一点不明白,是只有scanf函数这样还是getchar()、gets()都会这样?举个例子,假如我有一条语句写成

ch=getchar();

那么输入完字符之后还要敲回车,这个时候缓冲区里还有回车符么?为什么?

2007-01-06 16:16
快速回复:[求助]用Scanf输入完字符串之后,为什么要处理一下后面的回车符?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015810 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved