c - 程序输出顺序错误

标签 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;
}

最佳答案

问题是 stdout 是行缓冲的(当转到控制台时),因此除非您打印换行符,否则输出将保持缓冲状态并且不会显示(好吧,可以缓冲的最大大小这只是细节,您的少量输出将保留在缓冲区中)。

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

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

setvbuf (stdout, NULL, _IONBF, 0);

关于c - 程序输出顺序错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27808105/

相关文章:

c - c中的mmap errno 22读取openmp数据类型描述

c - 在 C 中动态创建和初始化指向结构的指针数组

c - 在 O(1) 时间内找到 BST 大小 C

Android 和 Eclipse - 具有项目依赖性的 java.lang.NoClassDefFoundError

eclipse - 尝试运行 eclipse 产品时出现异常

C# 打开/关闭控制台输出

c - 在 C 中使用带有 ZBar 的 OpenCV 的问题

eclipse - Gradle:主机名不能包含空格

kotlin - 如何使用kotlin在控制台的x,y坐标中打印字符?

来自另一个线程的 Java 控制台输出被丢弃