执行以下代码时遇到了困难。完成一次执行后,变量't'取空值。通过使用getch()而不是scanf()解决了这个问题。但我不知道为什么会这样。任何解释? 这个程序没有用。
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
char t;
void main()
{
while(1)
{
scanf("%c",&t);
printf("\nValue of t = %c",t);
printf("\nContinue (Y/N):");
char a=getche();
if(a=='n' || a=='N')
exit(0);
}
}
现在,这是正确执行的程序。
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
char t;
void main()
{
while(1)
{
t=getch();
printf("\nValue of t = %c",t);
printf("\nContinue (Y/N):");
char a=getche();
if(a=='n' || a=='N')
exit(0);
}
}
答案 0 :(得分:8)
当你读一个角色时,
scanf("%c",&t);
在输入流中留下了一个换行符,导致后续的scanf()跳过循环中的输入。
请注意getch()
是非标准功能。您可以改为使用getchar()
。
或将其更改为:
scanf(" %c",&t);
注意格式说明符中的空格,该空格确保在读取%c
的字符之前scanf()跳过所有空格。