当我因某种原因编译这个小程序时,"printf("done")"行没有执行,我无法弄清楚原因.在我的print语句之前最初有一个if块,而且还没有执行.我尝试通过gdb运行它并逐步完成它.它找到了该行,但它没有执行它.我正在尝试使用gcc 4.7.2编译它,我使用gedit 3.4.2作为我的文本编辑器.
这是我用来编译它的命令.
gcc teststuff.c -o test
Run Code Online (Sandbox Code Playgroud)
这是代码
#include <stdio.h>
void testmethod()
{
int sign = 1;
printf("hello\n");
printf("%d\n",sign);
printf("done");
}
main(void)
{
testmethod();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
任何人都有任何想法,为什么它跳过代码的这一部分?谢谢!
最后放一个换行符.
printf("done\n");
Run Code Online (Sandbox Code Playgroud)
标准输出通常是行缓冲的,这意味着一旦完成一行,您编写的数据就会被刷新到屏幕上(除非您明确刷新它,例如fflush()).但是,它应该在程序退出时刷新(但不一定在程序退出之前).
此外,根据您的shell,如果程序在没有换行符的情况下写入数据,您可能会在输出之上获得命令提示符:
my-computer ~/projects/my-program $ ./a.out
hello
1
donemy-computer ~/projects/my-program $
Run Code Online (Sandbox Code Playgroud)