【发布时间】:2014-11-15 11:03:18
【问题描述】:
我尝试使用scanf 两次扫描字符串,然后扫描字符。它首先扫描字符串并且不执行第二个scanf。当我在一个scanf 中同时使用%s 和%c 时,它可以完美运行。你能告诉我为什么会这样吗?
#include<stdio.h>
int main()
{
char s[100],ch;
scanf("%s",s);
scanf("%c",&ch); //this does not work
printf("%s %c",s,ch);
return 0;
}
另一个有效的程序
#include<stdio.h>
int main()
{
char s[100],ch;
scanf("%s %c",s,&ch); //this works!
printf("%s %c",s,ch);
return 0;
}
【问题讨论】:
-
“不起作用”并没有向我们解释发生了什么。你期望会发生什么?究竟发生了什么?你做了什么来尝试理解问题?当您在程序中使用调试器时发生了什么?
-
在第一个选项中,在第二个
scanf之后立即放置一个断点并检查ch的值。很可能是第一个scanf中的换行符。不要吝啬学习如何调试你的代码,它会在未来帮助你。 -
注意:避免裸体
"%s"。最好在这里使用"%99s"。