为什么这不允许我将字符输入函数内部的变量。我在另一个功能中有完全相同的事情,我对此没有任何问题。
这是一种工作
char anotherOne='s';
while(anotherOne=='s'){
printf("nWould you like to continue?");
scanf("%s", &anotherOne);
}
然后,我在另一个功能中有一个不起作用的功能
char op='s';
while(op=='s'){
printf("next(s) o prev(a)?");
scanf("%s", &op);
}
在我写一个字符并击中的第二个中,只需停止并退出执行。
我在两个示例之间都有更多的代码,但我尝试了如图所示的那样编写它们。
格式指定符"%s"
期望指向一个字符数组,而不是单个char
的地址 - 但是由于传递到函数时阵列衰减的阵列衰减,因此scanf
不知道差异并试图将整个字符串写入&anotherOne
,这是不确定的行为,因为您不知道过程中的内容"或系统的内存会被覆盖。
如果要读取单个字符,则需要做的是使用格式指定符"%c"
。