c - c中printf命令的顺序

标签 c printf

我正在尝试学习 c,刚开始观看一些在线视频并尝试做这个示例,但我的结果不是我所期望的。这段代码只是简单地输入一个数字并打印出您输入的数字,但是我不知道哪里出了问题。

 #include <stdio.h>

int main(void) {
    int aNumber;
    printf("Please enter a number: ");
    scanf("%d", &aNumber);
    printf("you entered %d", aNumber);
    getchar();
    return 0;
}

但是当我运行这段代码时,它应该要求用户输入一个数字而不是它什么都不做,直到我输入一个数字并且输出是这样的:

5
请输入数字:您输入了5

我在其中输入 5,按回车键,然后代码打印出语句。谁能告诉我为什么顺序出错了。应该是

请输入数字:5
你输入了 5

首先弹出“请输入数字:”,然后我输入 5,依此类推。

最佳答案

您很可能需要刷新标准输出才能显示输出。为此调用 fflush(stdout)。如果你不这样做,一些输出可能会被缓冲,这会导致你所看到的。

#include <stdio.h>

int main(void) {
    int aNumber;
    printf("Please enter a number: ");
    fflush(stdout);
    scanf("%d", &aNumber);
    printf("you entered %d", aNumber);
    getchar();
    return 0;
}

关于c - c中printf命令的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34552660/

相关文章:

C 编程基础知识 : Why can't I see the . o 使用 gcc 编译 .c 文件后的文件

c - 一种在C中进行位操作的方法

C++ 字符串到 C 字符串

c - 从文件(未知长度)读取时如何正确 malloc 和 free char**?

c - 如何从使用 gtk 回调调用的函数返回值?

c++ - 用 C 和 C++ 编写代码的不同值(value)观

c - 将更大的字符串存储到 arr[num]

将 double 转换为整数以提高速度

c++11 - 如何在 g++ -std=c++11 version 4.8.2 中使用 snprintf()

c - 为什么我们不应该在printf语句中传递程序的输入呢?