C语言循环里scanf用不了
发布网友
发布时间:2022-07-13 05:43
我来回答
共2个回答
热心网友
时间:2022-07-13 05:44
肯定是因为game()函数里有scanf语句,并且scanf之后没有处理scanf留下的换行符。
scanf从屏幕是读取数据时,往往不会自动读掉行尾的换行符(你输入数据后,肯定会按一个回车的对吧),所以在game函数里的最后一个scanf结束后,输入缓冲区里还一个换行符在里面,这个时候main函数里的scanf函数读到的字符就是那个换行符
解决方法:
在game函数的最后一个scanf函数后面,加上一个gets语句,用来读掉最后一个换行符即可,当然如果你的输出里敲了多个回车,就要执行多句,不懂可以贴上你的game()函数和你上面的输入,我再告诉你
热心网友
时间:2022-07-13 05:45
输入y后,回车也是一个符号,第二次直接就跳出循环了,你可以这么写
int count=0;
char answer='y';
while(1)
{
if(answer=='y')
printf("another(y/n)");
scanf("%c",&answer);
if(answer=='y')
{
count++;
}
else if(answer=='n')
{
break;
}
}
printf("%d\n",count);
追问我也有这么写过,仍然不行的。
C语言循环里scanf用不了
肯定是因为game()函数里有scanf语句,并且scanf之后没有处理scanf留下的换行符。scanf从屏幕是读取数据时,往往不会自动读掉行尾的换行符(你输入数据后,肯定会按一个回车的对吧),所以在game函数里的最后一个scanf结束后,输入缓冲区里还一个换行符在里面,这个时候main函数里的scanf函数读到的字符就...
C语言-循环里第二个scanf不能输入内容
这个原因是由于输入数字之后的回车符号引起的;可以在scanf ("%c", &option)之前,或者scanf ("%d", &sum)之后加一句fflush(stdin)来刷新缓冲区进行解决,也可以用getchar()获得一个字符来解决该问题。
C语言中用scanf("%c",&ch);程序会出错,如果scanf(" %c",&ch);在%c...
清空输入缓冲区。如果经常出现情况这种的话,第一次输入的回车可能会被第二次输入操作所捕捉,这个的作用就是清空缓冲,这样就不会出现这种情况了。控制串中的空白符使 scanf() 在输入流中跳过一个或多个空白行。空白符可以是空格(space)、制表符(tab)和新行符(newline)。 本质上,控制串中的空白...
在C语言中,为什么我的一个 scanf代码在第二次循环操作时,那步骤不执...
因为scanf输入要按回车,输入一个字符后回车,计算机实际上接收了两个字符,即:字符+回车。试一下flushall(); or fflush(stdin);
C语言scanf语句导致无法进入循环?
问题也很简单,就是在第一个scanf函数的时候,你是按了回车的,所以第二次使用scanf的时候,fgets直接吃掉了回车,这是我们不需要的,所以在这个之前,我们必须先把stdin输入流里的回车,清理掉,使用fflush函数一次清理了stdin输入流,等stdin输入流干净了之后,再调用fgets就不会出错了,当然也可以使用...
C语言的scanf怎么没执行?
这是因为在上一次使用scanf后没有清空输入缓存, 这样你再次使用scanf的时候函数就可能会认为你已经输入过了。解决这一问题的最简单办法是在接收字符的scanf的控制符"%c"中的%前加一个空格写成" %c",把前一次输入遗留在输入缓冲区里的所有广义空格(' '、'\t'、'\n'等)都吸收掉。
c语言scanf无法写入字符
当运行输入字符串s后会以回车结束,而以上代码第5行scanf_s不会读入回车符,回车符被代码第7行getch读入,因此输出结果不会保留,程序直接结束。
C语言。为什么在调用函数中用了scanf.之后主函数的scanf和printf语句就...
虽说意义不明,所以,你在操作过程中有按回车键,这个操作会进入输入流,被后面那个scanf("%c",&ch);读取了,ch读取了回车,因此表现为Press any key to continue之前会有一次回车,实际上执行过。
c语言用scanf( )时遇到一个难题
其次,当输入了多于3个数时, scanf只转换了前三个, 后边的会留在输入流中,等下一个输入语句读取。 这个倒是容易解决:可调用fflush(stdin);清空输入流。我想了个小巧解决你的这个需求。 以下代码给你参考 int a,b,c,lost;char buf[100];while(1){ gets(buf);// 这里用了个小花招,增加...
C语言关于for循环中使用scanf连续输入的问题or not,求大神看看代码...
include <stdio.h>int main(){int n,i,a,b;int d[100];scanf("%d",&n);for(i=0;i<n;i++){scanf("%d %d",&a,&b);d[i]=(a*b);} for(i=0;i<n;i++){printf("%d\n",d[i]);}return 0;}