为什么这不允许我在函数内的变量中输入字符。我在另一个函数中有完全相同的东西,并且我对那个函数没有任何问题。
这就是有效的
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);
}
在第二个中,当我写一个字符并按 Enter 键时,只需停止并退出执行。
我在两个示例之间有更多代码,但我尝试按照所示方式编写它们,但发生了同样的事情。
最佳答案
格式说明符“%s”
需要一个指向字符数组的指针,而不是单个char
的地址 - 但由于数组在传递给一个函数 scanf
不知道区别,并尝试将整个字符串写入 &anotherOne
,这是未定义的行为,因为您不知道进程中的内容'否则系统内存将被覆盖。
如果您想读取单个字符,您需要做的是使用格式说明符“%c”
。
关于c - 为什么不让我使用 scanf() 向字符输入值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54726345/