我正在学习 C,我正在使用“getchar()”来停止命令窗口,这样我就可以看到正在进行的练习,但它不起作用。这是一个示例:
#include <stdio.h>
int main()
{
int value;
printf("1. option 1.\n2. option 2.\n3. option 3.\n4. Exit\n\nMake an option: ");
scanf("%d", &value);
switch (value)
{
case 1:
printf("you selected the option 1.");
break;
case 2:
printf("you selected the option 2.");
break;
case 3:
printf("you selected the option 3.");
break;
case 4:
printf("goodbye");
break;
default:
printf("thats not an option");
break;
}
getchar();
return 0;
}
这是输出:
- 选项1。
- 选项2。
- 选项3。
- Exit.
做出一个选项:1
您选择了选项 1。
进程返回 0 (0x0) 执行时间:3.453 s
按任意键继续。
为什么不等待“getchar()”的输入?
你的 scanf 只吃了数字,但没有吃掉尾随的换行符。在 %d 之后添加换行符或空格将会给你带来相反的问题,读得太远。
这就是人们不喜欢scanf的原因。
我建议阅读实际的行(使用fgets(3)
)然后使用sscanf()
扫描字符串。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)