程序输出顺序错误

时间:2015-01-06 22:11:13

标签: c eclipse console eclipse-cdt

我在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;
}

2 个答案:

答案 0 :(得分:0)

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

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

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

setvbuf (stdout, NULL, _IONBF, 0);

答案 1 :(得分:0)

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