大约2个变量

时间:2015-07-26 09:04:32

标签: c

我有一个问题,我们的老师要求我们使用if else语句写一个石头剪刀程序

我的问题是

如果我像这样编码

char a, b;
clrscr();
printf("\n Enter player 1 value");
scanf("%c", &a);
printf("\n Enter Player 2 value:);
scanf("%c", &b);

我的问题是,当我输入第一个值后我这样编码它会忽略第二个值而只是继续使用if语句

我找到了一个解决方案,它在第二个scanf上放置了%c的空间,看起来像这样(找到了类似的程序)

scanf(" %c", &b);

它有效,但现在我不知道为什么? 任何人都可以向我解释为什么它被忽略,为什么放空间解决了这个问题?它会很乐意帮助

提前致谢

2 个答案:

答案 0 :(得分:0)

通过添加空格来排除前一个scanf创建的空格。

答案 1 :(得分:0)

scanf()一旦找到空格就会停止,所以如果字符串以空格开头,则什么也得不到。

使用scanf("%[^\n]", &variable)获取所有内容(包括空格)或更好  scanf("%30[^\n]", &variable)获取输入大小限制的所有内容(在本例中为30)。

还有另一个功能可以让您从流中读取: fgets(&variable, sizeof variable, stdin);检查此处的文档(http://www.cplusplus.com/reference/cstdio/fgets/