我在 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/