www.3112.net > C语言%循环里第二个sCAnF不能输入内容

C语言%循环里第二个sCAnF不能输入内容

这个原因是由于输入数字之后的回车符号引起的;可以在scanf ("%c", &option)之前,或者scanf ("%d", &sum)之后加一句fflush(stdin)来刷新缓冲区进行解决,也可以用getchar()获得一个字符来解决该问题.

int i;int a[10] = {0};for(i = 0; i 评论0 0 0

因为scanf输入要按回车,就这么简单你输入的时候按了回车,回车指令还在等待执行,然后下一个scanf的时候就读入了这个回车

肯定是因为game()函数里有scanf语句,并且scanf之后没有处理scanf留下的换行符.scanf从屏幕是读取数据时,往往不会自动读掉行尾的换行符(你输入数据后,肯定会按一个回车的对吧),所以在game函数里的最后一个scanf结束后,输入缓冲区里还一个换行符在里面,这个时候main函数里的scanf函数读到的字符就是那个换行符解决方法:在game函数的最后一个scanf函数后面,加上一个gets语句,用来读掉最后一个换行符即可,当然如果你的输出里敲了多个回车,就要执行多句,不懂可以贴上你的game()函数和你上面的输入,我再告诉你

printf("错误\n你想纠正你的答案吗?请选择“Y”或者“N”\n");前面加一句fflush(stdin); 用来清除输入缓冲区中的回车符就行

只输入一次是什么意思?你这个程序是让你输入一串字符,来统计各种字符的个数,直到你输入回车后结束并输出结果

#include <stdio.h>// void main() 这种写法坚决抵制!// C语言从来不承认这种写法// 具体搜索引擎查 "C语言的main的所有写法"int main(void){ float data1, data2; char op; printf("请输入两个数据: "); scanf("%f %f", &data1, &data2)

在这里真不好说,其实秉承一个原则,就是scanf录入的时候,最好是中间什么都不要有,就是这种形式:scanf("%s%s%s",a,b,c);这样子的基本不会错,再就是你要区别一下scanf和scanf_s,可能两者的一点区别会导致一些问题,只能帮你到这里了,加油

键盘缓冲区的问题第一次输入后,还有个回车,给了第二个scanf了改为如下:#include "stdio.h" void main() {char a,b; scanf("%c",&a); fflush(stdin);//清空缓冲区scanf("%c",&b); printf("%c %c",a,b);}

加 fflush(stdin); 清除多余的键.main(){ int W=0;do { printf("\nenter Y or N\n"); fflush(stdin); // W=getchar(); // 这也可以 scanf("%c",&W); printf("\n%c,%d",W,W); if(((W=='Y')||(W=='y'))!=1) break; } while(1); return 0; }

相关搜索:

网站地图

All rights reserved Powered by www.3112.net

copyright ©right 2010-2021。
www.3112.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com