为什么不让我用scanf()向字符输入价值

  • 本文关键字:字符输入 scanf c
  • 更新时间 :
  • 英文 :


为什么这不允许我将字符输入函数内部的变量。我在另一个功能中有完全相同的事情,我对此没有任何问题。

这是一种工作

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"

最新更新