printf不在屏幕上打印

时间:2019-06-30 04:53:23

标签: c

我下载了该文件ToyVpnServer.cpp,并执行了文件头中的指令。然后我用gcc ToyVpnServer.cpp编译它,然后创建一个a.out,然后运行它(如文件标题中所述)./a.out tun0 8000 test -m 1400 -a 10.0.0.2 32 -d 8.8.8.8 -r 0.0.0.0 0。在编译它之前,如下所述,我添加了一行{{ 1}}在主函数的开头,这意味着它应在执行后立即在屏幕上打印printf("%d",1000);。但没有任何显示,程序继续运行。仅当参数计数小于5时,1000下的printf函数才有效!
我在Ubuntu14和16上都进行了测试。

它怎么了?

if (argc < 5)

2 个答案:

答案 0 :(得分:2)

  

它应该在执行后立即在屏幕上打印1000。?

printf()是一种库函数,其作用是将数据放入stdout缓冲区中而不是直接在控制台上,并且stdout流是行缓冲,即它将仅在到达新行后才显示其内容。

这里

printf("%d",1000);

printf()不会清除/刷新stdout流默认值,程序员需要这样做。解决此问题的一种方法是使用fflush(stdout)之类的

printf("%d",1000);
fflush(stdout);

或使用换行符,例如

printf("%d\n",1000); /* new line character clears the stdout buffer here */

答案 1 :(得分:-2)

exit(1);正在退出程序。在此行之前,请使用getchar();。暂停屏幕。