gpt4 book ai didi

c++ - getch() 和 scanf() 函数之间的区别

转载 作者:行者123 更新时间:2023-11-30 18:19:10 25 4
gpt4 key购买 nike

我在执行以下代码时遇到了困难。变量“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);
}
}

最佳答案

当你读到一个字符时,

scanf("%c",&t);

输入流中留下了一个换行符,导致后续的 scanf() 跳过循环中的输入。

请注意,getch() 是非标准函数。您可以使用 getchar() 代替。

或者将其更改为:

scanf(" %c",&t); 

请注意格式说明符中的空格,它确保在读取 %c 字符之前 scanf() 会跳过所有空格。

关于c++ - getch() 和 scanf() 函数之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14943488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com