c - scanf 在 C 中被跳过

标签 c input codeblocks scanning

我尝试运行以下程序:

int main(){
    char a;
    char b;
    char c;

    printf("\nenter a: ");
    scanf("%c", &a);

    printf("\nenter b: ");
    scanf("%c", &b);

    printf("\nenter c: ");
    scanf("%c", &c);

    return 0;

}

运行程序时,它会提示您输入 a 的值。一旦这样做,系统会提示您输入 b 的值,但是不允许您输入值,因为程序会跳过扫描,然后再次提示您输入未跳过的 c 值。我可以初始化a和c,但不能初始化b。我不知道为什么。我在某个地方读到在 scanf 中使用 %[^\n] ,但我尝试使用它,但我认为我没有正确使用它,因为它仍然不起作用。

这是输出(带有一些输入示例):

enter a: 1

enter b: 
enter c: 1

process returned 0 (0x0)

最佳答案

不要使用“%c”,而是使用“%c”

如果没有空格,当格式说明符为 %c 时,scanf 不会跳过空格。这最初会令人困惑,因为它会跳过其他格式说明符的空格,例如 %d%f%s 等。

关于c - scanf 在 C 中被跳过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45024729/

相关文章:

c - 使用 g++ 和 gcc 获取line

c - glGetUniform 为事件制服返回 -1

c - 如何创建数组的随机排列?

c - linux/windows 上的宽字符字符串函数

javascript - 显示与将作为 php 接收的输入不同的值

python - input() 在 Spyder IDE 中带有感叹号 (!)

c - 将串行输入读取到 C 变量

cocos2d-x - 在代码块中找不到 fontconfig/fontconfig.h

使用 Visual C++ Toolkit 2003 和 CodeBlocks 进行调试

c++ - 如何将 Eigen 库添加到 C++ 项目中