我编了一个程序,其中含一个循环,循环中有一个scanf语句,第一次循环时,scanf执行正常,而在1次循环后,scanf不执行就自动过去了。我用debug单步执行,按理说,后面的一次sacnf必须在黑框停顿让我填写,我按F10才能执行下一步。可是现在是我没输入任何内容,按F10就执行下一步了……怎么办?虚心求指教!
我在scanf后面用一个char型变量enter吸收了回车,即为enter=getchar();
还是不对啊……
卟。。用getch()试试,因为getchar()也是要按回车的
追问用getch(),提示我:undeclared identifier…………555……
追答#include "conio.h"
清除所有缓冲区,那么我是不是其他的数据也会消失呢?
追答不会的。
追问可是你这样写:
for(int i=0;i<10;i++)
{
flushall(); //清除多余的回车符。
scanf("%c",&c[i]);
}
电脑怎么知道你是清除c[ ]的变量呢?他不是清楚了所有变量信息吗?
flushall();//这个语句是清除键盘缓冲区,不是清除变量。
追问因为我是有很多个变量数据的,比如i,j,k……,如果我flushall后,那么这些变量以前赋的值不就是清空了吗?没了吗?
追答不会。
如果你会调试程序的话,你可以测试下,增加理解。
嗯嗯,加了,还是不对……
...scanf代码在第二次循环操作时,那步骤不执行了呢?
因为scanf输入要按回车,输入一个字符后回车,计算机实际上接收了两个字符,即:字符+回车。试一下flushall(); or fflush(stdin);
C语言的scanf怎么没执行?
这是因为在上一次使用scanf后没有清空输入缓存, 这样你再次使用scanf的时候函数就可能会认为你已经输入过了。解决这一问题的最简单办法是在接收字符的scanf的控制符"%c"中的%前加一个空格写成" %c",把前一次输入遗留在输入缓冲区里的所有广义空格(' '、'\\t'、'\\n'等)都吸收掉。
C语言输入一个scanf后 后面程序不执行?
scanf的意思,就是让你输入一个数值并回车 程序不执行,是等待你的输入。每个scanf都是在等待键盘输入。
c语言问题,代码输入完第一个scanf就自己结束了,第二个输出的文字什么的...
---同时我尝试了一下你的代码,发现输入第一个数以后,紧接着就需要输入第二个数才会提示输入年份,这是因为在第一个scanf语句中你使用了换行符,输入第一个数后需要回车,而回车就是换行,所以又一点问题,我改了一下 include <stdio.h> int main(){ int qi;int year;printf("请输入数字:\\n...
C语言。为什么在调用函数中用了scanf.之后主函数的scanf和printf语句就...
虽说意义不明,所以,你在操作过程中有按回车键,这个操作会进入输入流,被后面那个scanf("%c",&ch);读取了,ch读取了回车,因此表现为Press any key to continue之前会有一次回车,实际上执行过。
c语言问题,为什么这个程序第一次输入值好使,第二次就不行了呢?
r 的值没有初始化,这样的话你执行完程序 r=k%l 或 r=l%k ,这样 r 就有可能变为 0 ,r 为 0 了,则第二次循环的时候,while(r) 控制的内容则不执行 ;所以每次执行 while 之前都应为 r 赋一个非 0 值 修改 :scanf("%d%d",&a,&b);k=a;l=b;这里后面加一句 r...
为什么c语言中,如果在scanf括号中最后写上\\n,程序运行时,输入后会没...
等待输入'\\n',可是scanf把最后打入的'\\n'当作接收命令而不赋给变量,所以要再输入一个数据再打回车才能向下走,而且输入的是上一次的数据,第二次打入的数据并未接收。所以这种写法是错误的,要坚决避免。
为什么链表C语言main函数里面加入for循环却在第二次输入的时候会停止运...
这个程序不会停止运行,只会等待输入,你继续输入就可以了;可以在scanf之后价格打印把输入的内容取出来就知道了。基本上都是由于终端输入的回车之类干扰的scanf的结果。
C语言中用scanf("%c",&ch);程序会出错,如果scanf(" %c",&ch);在%c...
清空输入缓冲区。如果经常出现情况这种的话,第一次输入的回车可能会被第二次输入操作所捕捉,这个的作用就是清空缓冲,这样就不会出现这种情况了。控制串中的空白符使 scanf() 在输入流中跳过一个或多个空白行。空白符可以是空格(space)、制表符(tab)和新行符(newline)。 本质上,控制串中的空白...
C语言-循环里第二个scanf不能输入内容
这个原因是由于输入数字之后的回车符号引起的;可以在scanf ("%c", &option)之前,或者scanf ("%d", &sum)之后加一句fflush(stdin)来刷新缓冲区进行解决,也可以用getchar()获得一个字符来解决该问题。