程序输出顺序错误

Program output in wrong order

我在 Eclipse 环境中开发一个 C 项目,代码正确且可执行,但输出 行不按程序要求用户 输入 1-5 之间的数字,然后询问姓名,然后询问街道 但除非我输入这些值,否则控制台屏幕上不会出现任何内容

#include <stdio.h>
#include <stdlib.h>

int main(void) {

    char name[20], address[30];

    char c;
    printf("How do you feel on a scale of 1-5?");
    c = getchar();

       printf("Enter name: ");
       scanf("%s", &name);

       printf("Enter your address: ");
       scanf("%s", &address);

       printf("Entered Name: %s\n", name);
       printf("Entered address:%s\n", address);

       printf("You said you feel: ");
       putchar(c);

    return EXIT_SUCCESS;
}

问题是 stdout 是行缓冲的(当进入控制台时),所以除非你打印一个换行符,否则输出将保持缓冲而不显示(好吧,会有一个最大尺寸可以缓冲只是细节,您的少量输出将保留在缓冲区中)。

我想到的两个解决方案是,在前 3 个 printf 调用后使用 fflush (stdout);,这将导致 stdout 缓冲区刷新到控制台,应该可以解决您的问题。

您也可以关闭 stdout 的缓冲,请参阅 setvbuf 了解如何执行此操作,但我认为,将此调用放在 main 的开头附近(在任何输出之前)应该有效(未经测试):

setvbuf (stdout, NULL, _IONBF, 0);

问题是您的第二个 scanf 正在捕获前一个输入的 \n 字符,请尝试使用 fgets 以避免这种行为。