关于getchar()得菜鸟问题

BizHack 2006-03-30 12:12:22
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
1.程序分析:利用while语句,条件为输入的字符不为'\n'.
      
2.程序源代码:
#include "stdio.h"
#include "conio.h"
main()
{
char c;
int letters=0,space=0,digit=0,others=0;
printf("please input some characters\n");
while((c=getchar())!='\n')
{
if(c>='a'&&c<='z'||c>='A'&&c<='Z')
letters++;
else if(c==' ')
space++;
else if(c>='0'&&c<='9')
digit++;
else
others++;
}
printf("all in all:char=%d space=%d digit=%d others=%d\n",letters,
space,digit,others);
getch();
}


大家可以看到上面关于getchar()得应用 只要不遇到\n(此时可以理解为回车吧)就一直进行while里的语句 但是当我们进行输入得时候 是不是由于getchar();只接收一个字符 这样我们随便一个输入只要不是回车 他就自动进行下面得操作 只是我们看不到,也就是说下面的运算是不需要回车就能激活得?
...全文
194 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lonelyforest 2006-03-30
  • 打赏
  • 举报
回复
getchar() 是从输入流里提取出一个字符。 执行的标志是你按下回车键, 其余的输入留给下次或者丢弃。
所以和你的意思不一样。
zhawk008 2006-03-30
  • 打赏
  • 举报
回复
楼主的理解基本算对。。。当输入的不是回车的时候就执行while里的语句。。。一些结果暂时在内存里。。~`当输入回车时跳出循环~``然后执行后面的语句~``
BizHack 2006-03-30
  • 打赏
  • 举报
回复
那能具体解释下这个getchar()是怎么处理终端的输入 还有就是找个回车到底怎么来看它
qybao 2006-03-30
  • 打赏
  • 举报
回复
当然不是了
楼主可以自己试试
getchar();
printf("come here");
你看看你不回车,能打印下面的语句吗?
reed7 2006-03-30
  • 打赏
  • 举报
回复
接上,但是必须通过回车启动循环,因为回车后才会把缓存里的东西读出。不好意思,说话总是丢三落四。。。。
reed7 2006-03-30
  • 打赏
  • 举报
回复
应该是你在回车前输入了多少个字符,while就跑几次。
cquazhi 2006-03-30
  • 打赏
  • 举报
回复
我也正对 getcha()的执行问题感到疑惑呢?好像大家的意见并不一致啊

70,037

社区成员

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

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