我在使用Eclipse和CDT时遇到问题,问题始于初学者代码,使用 printf()来请求输入, scanf()来存储输入,但是在获得 scanf()参数后,控制台才会显示 printf()参数。
我发现很多线程都与这个问题有关,并且理解它是eclipe中的一个错误,即使使用\ n,缓冲区也没有被正确刷新。 解决方案似乎是在每个 printf()后使用 fflush(stdout)或添加 setbuf(stdout,NULL,_IONBF,0)在 main()函数的开头。
我添加了 setvbuf(stdout,NULL,_IONBF,0)我也试过 fflush(stdout)但是eclipse说stdout无法解析。
任何人都可以说出为什么以及如何解决这个问题。
谢谢。
Mick Caulton
这是我的代码:
#include <stdio.h>
int main(){
//setvbuf(stdout, NULL, _IONBF, 0);
char letter;
int num1,num2;
printf("Enter any one keyboard character:\n");
// fflush(stdout);
scanf("%c",&letter);
printf("Enter 2 integers separated by a space: \n");
//fflush(stdout);
scanf("%d %d",&num1,&num2);
printf("Numbers input: %d and %d\n",num1,num2);
printf("Letter input: %c",letter);
printf(" stored at %p \n",&letter);
return 0;
}
答案 0 :(得分:0)
如果您在Windows上进行开发,请记住行尾指示符为\r\n
(您只使用\n
)和Eclipse控制台窗口着名的只是整条线。