本文介绍了C++中scanf的怪异行为的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
if (a % 5) {
goto ask;
}
else {
goto main;
}
ask:
printf("Do You Want To Exit ? Y \ 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;
}
有人能帮我了解一下出了什么问题吗?出于某种原因,我从这段代码中得到的输出是是否要退出(&Q;D)?&报价;加查尔..。对不起,没听清您想退出吗??
看起来像是第一次跳过scanf()
,程序直接转到else
==&>"sorry i didnt get that"
并且只在第二次解决了如何使用scanf()
。推荐答案
scanf()
使用%c
读取字符,是的,%c
[检查下面的扰流器]按%c
Enter键非常有效。
使用
scanf(" %c", &YN); //mind the space brefore `%c`
^
|
忽略以前存储的任何[也是前导]空格[包括换行符。]
这篇关于C++中scanf的怪异行为的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!