【发布时间】:2014-07-19 04:33:23
【问题描述】:
我在使用 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 无法解析。
谁能告诉我为什么以及如何解决这个问题。
谢谢。
米克·考顿
这是我的代码:
#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;
}
【问题讨论】:
-
您好,欢迎来到 StackOverflow!你能产生一个仍然表现出这种行为的最小源吗? TBH 看起来你只是没有
#include <stdio.h>。 -
感谢您的回复。我已经包含了 stdio 库——这是我检查的第一件事。我将在下面发布我的代码。就像运行时一样,eclipse的控制台保持空白。当您输入所需的输入(字母和两个数字后跟回车)时,它会打印出所有内容。请求和确认。注释掉的行是我在网上找到的用于刷新标准输出缓冲区的解决方案,每个人似乎都说这是解决方法,但正如我在 Eclipse 告诉我标准输出无法解决之前所说的那样。再次感谢您。
-
'code' #include
int main(){ //setvbuf(stdout, NULL, _IONBF, 0);字符字母;整数 num1,num2; printf("输入任意一个键盘字符:\n"); // fflush(stdout); scanf("%c",&letter); printf("请输入两个用空格隔开的整数:\n"); //fflush(标准输出); scanf("%d %d",&num1,&num2); printf("数字输入:%d 和 %d\n",num1,num2); printf("字母输入:%c",letter); printf("存储在 %p \n",&letter);返回0; } -
'code''code' #include
int main(){ //setvbuf(stdout, NULL, _IONBF, 0);字符字母;整数 num1,num2; printf("输入任意一个键盘字符:\n"); // fflush(stdout); scanf("%c",&letter); printf("请输入两个用空格隔开的整数:\n"); //fflush(标准输出); scanf("%d %d",&num1,&num2); printf("数字输入:%d 和 %d\n",num1,num2); printf("字母输入:%c",letter); printf("存储在 %p \n",&letter);返回0; }'代码' -
哎呀,试图在这里解决格式我如何正确发布代码?
标签: eclipse eclipse-cdt