我开始用C语言了.我使用eclipse(juno)作为我的IDE并安装了CDT插件.我还解压缩了mingw64(GCC编译器).我写了一个非常简单的程序,看它是否有效.这是我的代码:
#include <stdio.h>
int main()
{
int age;
printf("Hello, please enter your age:\n");
scanf("%d", &age);
printf("Your age is %d", age);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
问题是输出缓冲区填充了第一个字符串的值,printf
但不会将其输出到控制台.我必须输入一个数字,然后只有缓冲区将所有数据倒入控制台,所以我看到控制台是这样的:
1
Hello, please enter your age:
Your age is 1
Run Code Online (Sandbox Code Playgroud)
而不是预期的:
Hello, please enter your age:
1
Your age is 1
Run Code Online (Sandbox Code Playgroud)
现在,我发现我可以fflush(stdout)
在第一个之后使用,printf
但我不认为这个解决方案是优雅的,甚至是必要的.关于如何克服这个问题的任何想法?
编辑 - 因为我在大学里学习这个,我不能使用课程中没有学到的东西,所以我只能使用printf
和scanf
新编辑 - 我想我已经找到了解释.正如我所说,我正在输出到Eclipse内的控制台视图.奇怪的是,如果我从Windows的命令行编译并运行程序,我得到想要的结果.因此,我认为eclipse实际上是将输出写入文件并在控制台窗口中显示.如何强制eclipse在我的运行配置中打开一个真正的命令行窗口?
我正在使用Eclipse来编写C/C++代码,而我正在努力解决可能非常简单的问题.在我下面的代码中,我使用printf()
和之后scanf()
.Althougth printf
是在scanf()
输出不同之前编写的.我能在这里找到类似问题的东西.但我无法解决它.有任何想法吗?
码:
#include <stdio.h>
int main()
{
int myvariable;
printf("Enter a number:");
scanf("%d", &myvariable);
printf("%d", myvariable);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
预期产量:
Enter a number:1
1
Run Code Online (Sandbox Code Playgroud)
相反,我得到:
1
Enter a number:1
Run Code Online (Sandbox Code Playgroud)