程序输出顺序错误
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 以避免这种行为。
我在 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 以避免这种行为。