为什么这不能让我在函数内部的变量中输入字符。我在另一个函数中有完全相同的东西,而那个函数没有问题。
这是可行的
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时,只需停止并退出执行即可。
两个示例之间都有更多代码,但我尝试如图所示编写它们,并且发生了相同的事情。
答案 0 :(得分:2)
格式说明符"%s"
需要一个指向字符数组的指针,而不是单个char
的地址-但是由于数组在传递给函数时会衰减为指针,因此scanf
不会不知道它们之间的区别,并尝试将整个字符串写入&anotherOne
,这是未定义的行为,因为您不知道进程中的内容是什么,否则系统的内存将被覆盖。
如果要读取单个字符,则需要使用格式说明符"%c"
。