小白新手求助,求大神帮帮忙!!关于scanf在for循环中的问题

小丫么小菜鸡 2018-10-30 09:40:09

#include<stdio.h>
int main(void)
{
char c;
int cont=0;
int cont2=0;
int bank=0;
int digit=0;
int other =0;



for(int i=1;i<=15;i++){
printf("请输入:\n");
c = getchar();

if(c>='1'&&c<='9'){
cont++;
}else if(c>='a'&&c<='z'||c>='A'&&c<='Z'){
cont2++;
}else if(c==' '){
bank++;
}else if(c=='\n'){
digit++;
}else{
other++;
}
}
printf("空格:%d",bank);
printf("数字:%d",cont);
printf("英文字符:%d",cont2);
printf("回车:%d",digit);
printf("其它:%d",other);
}

---------------------------------------------------------------------------------------以上是代码
Reold 123?45678
请输入:
请输入:
请输入:
请输入:
请输入:
请输入:
请输入:
请输入:
请输入:
请输入:
请输入:
请输入:
请输入:
请输入:
空格:1数字:8英文字符:5回车:0其它:1
---------------------------------------------------------------------------------------以上是程序输入

小弟不懂了,为什么输入了一个15个字符后 getchar() 就不在做循环了??? 应该是输入一个字符后循环再输入一个字符循环,一直循环到15次嘛,为什么输入一次 getchar() 就停止循环了? 求大神帮忙告诉,还有个问题,scanf()和getchar()用法一样么??如果换scanf()到循环里会整么样?? 谢谢帮助! 谢谢!
...全文
169 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2018-10-31
  • 打赏
  • 举报
回复
15个字符整好是循环15次呢
棉猴 2018-10-31
  • 打赏
  • 举报
回复
在控制台中通过键盘输入数据时,以回车键作为结束标志。当输入结束后,键盘输入的数据连同回车键一起被输入到输入缓冲区中。在程序中第一次调用getchar()函数从输入缓冲区中读取一个字节的数据。需要注意的是,如果此时在程序中第二次调用getchar()函数,因为此时输入缓冲区中还有回车键的数据没有被读出,第二个getchar()函数读出的是回车符。
解决的方法请参考《C++中getchar()的使用方法》
希望能够帮到你
鸭腿饭E 2018-10-31
  • 打赏
  • 举报
回复
回车也是一个字符,当你第一次输入按完回车后,回车会被留在缓冲区,下一次循环就会直接把缓冲区里的回车接收了,你可以用getch()来输入一个字符,这个是不需要按回车的,也可以在scanf里的%c前面加一个空格,这样子会跳过空格回车之类的字符

69,368

社区成员

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

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