gpt4 book ai didi

c - 在 C i/o 中跳过代码行

转载 作者:行者123 更新时间:2023-11-30 16:47:09 30 4
gpt4 key购买 nike

在学习简单程序中的C语言时,计算机经常会跳过某些代码行的执行,我不明白为什么会这样。

现在作为一个例子,我画了一个程序,它只存储用户输入的 3 个数字:

#include <stdio.h>

int main(void)
{
int a, b, c;

printf("Please type in number a: \n");
scanf("%i", &a);
printf("Please type in number c: \n");
scanf("%i", &c);
printf("Please type in number b: \n");
scanf("%i", &b);
return 0;
}

我想输入 1、2 和 3。这是我在控制台中得到的内容(在 Ubuntu 中):

Please type in number a:
1
Please type in number b:
Please type in number c:
2

数字b的输入被忽略。

不仅第二个输入被跳过,甚至输入的顺序也是错误的。最初,我在代码中按字母顺序编写了所有内容 - a、b 和 c,然后跳过了 b 的输入,然后我更改了代码中的顺序,但正如您所看到的,执行仍然保持不变。

我之前也遇到过这样的情况。

为什么会发生这种情况?

最佳答案

根据第二个想法,我认为OP还有另一个问题

留下以下社区维基作为引用

<小时/>

为了确保输出发生在 scanf() 之前,请刷新输出。

printf("Please type in number a: \n");
fflush(stdout);
scanf("%i", &a);

printf("Please type in number c: \n");
fflush(stdout);
scanf("%i", &c);

参见What are the rules of automatic flushing stdout buffer in C?

关于c - 在 C i/o 中跳过代码行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43427634/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com