gpt4 book ai didi

c - C 中 scanf 的奇怪行为

转载 作者:太空宇宙 更新时间:2023-11-04 08:34:05 25 4
gpt4 key购买 nike

if (a % 5) {
goto ask;
}
else {
goto main;
}

ask:
printf("Do You Want To Exit ? Y \\ N . . . \n");
scanf("%c", &YN);
getch();
if (YN == 'Y') {
y:
system("cls");
YN = 1;
goto sign;
}
else if (YN == 'y') {
goto y;
}
else if (YN == 'N') {
n:
system("cls");
YN = 0;
goto sign;
}
else if (YN == 'n') {
goto n;
}
else {
printf("Sorry ..Didn't Catch that ... ");
goto ask;
}

有人可以帮助我了解哪里出了问题吗?出于某种原因,我从这段代码得到的输出是“你想退出 y\n 吗?”获取...“抱歉没听清楚你想退出 y\n 吗?”

看起来它第一次跳过了 scanf() 并且程序直接转到了 else ==> "sorry i didn't get那个”并且只有在第二次它才弄清楚如何使用 scanf()

最佳答案

scanf() 使用 %c 读取字符,是的,ENTER 键按下 [在您之前的输入之后] 非常有用%c [检查下面的剧透]。

ENTER 键按下 == 换行符

使用

scanf(" %c", &YN);  //mind the space brefore `%c`
^
|

忽略任何先前存储的 [also, leading] 空格 [包括换行符。]

注意:这也消除了对 getch();

的需要

关于c - C 中 scanf 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27015857/

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