我在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;
}
答案 0 :(得分:0)
问题是stdout是行缓冲的(当进入控制台时),所以除非你打印换行符,否则输出将保持缓冲而不显示(好的,那将是最大的大小)可以缓冲的只是细节,你的少量输出将保留在缓冲区中。
我遇到的两个解决方案是,在前3次fflush (stdout);
调用之后使用printf
,这将导致stdout缓冲区刷新到控制台,并应解决您的问题。
您也可以关闭stdout的缓冲,请参阅setvbuf
了解如何执行此操作,但我认为,将此调用放在main的开头(在任何输出之前)应该可以工作(未经测试):
setvbuf (stdout, NULL, _IONBF, 0);
答案 1 :(得分:0)
问题是你的第二个scanf正在捕获前一个输入的\ n字符,尝试使用fgets以避免这种行为。