【发布时间】:2020-06-17 13:50:09
【问题描述】:
我在 CLion 上写了一个测试代码。代码是:
#include <stdio.h>
int main() {
int a, b, sum;
printf("Enter an integer: ");
scanf("%d", &a);
printf("Enter another integer: ");
scanf("%d", &b);
sum = a + b;
printf("Sum: %d\n", sum);
return 0;
}
代码的输出不像它应该的那样。代码的输出是:
Enter an integer:23
Enter another integer:12
Sum: 35
输出问题: 1. 在第一行中,(:) 后面会有一个空格 2. int第二行,它在一个空格之后开始,并且在(:)之后也没有空格 3. 第三行也是以空格开头。
还有一个问题。它显示了scanf 的警告。此处给出警告消息图像:
建议我使用strtol 而不是scanf。但是当我使用strtol 时,它会显示错误。
我正在使用 mingw。
它的解决方案是什么?请帮帮我。
【问题讨论】:
-
您的代码在我看来是正确的。
-
输出问题属于某些IDE的缓冲,和你的代码无关,没关系。 Eclipse 有一个非常相似且著名的问题,here。
-
请将
scanf()/strtol问题打包成另一个单独的问题。我们需要查看实际代码以了解 CLion 为何建议strtol以及如果您将其与如何使用strtol的示例一起使用,您的代码为何会失败。 -
你不能直接用 strtol() 替换 scanf()。 fgets() 然后 strtol() 是可取的。但是,对于像这样的简单练习,可以忽略警告。
-
如果在每个
printf语句之后立即放置fflush(stdout);会发生什么?