
为什么不printf打印字符串?
在freeBSD环境中,gcc逐步编译\ assembly \链接以下代码
#include <stdio.h>
void main(int argc,char* argv[])
{
printf("hello world");
_exit(0);
}
编译/汇编:
gcc-cmain.c
链接
ldmain.o / usr / lib / crt1.o / usr / lib / crti.o-lc-emain

运行:
./ a.out
运行没有错误,但是结束却没有输出printf输出字符串不加换行符,为什么? !!!
------解决方案--------------------
删除您的_exit(0);然后重试
------解决方案--------------------
The

exit函数具有一些基于_exit函数的包装器. 在终止该过程之前,它还会执行诸如检查文件打开和清除I / O缓冲区之类的操作,例如将文件缓冲区的内容写回到文件中.
#include <stdio.h>
#include <unistd.h>
int main(void)
{
printf("Hello World!\n");//有换行符。
printf("OK");//注意:没有换行符。
_exit(0);//若用它,则不会输出OK。因为缓冲区的'OK"没有换行符,最终没有输出到终端,只输出Hello World,注意是在linux上。
exit(0);//若用它,则会输出OK.
}
房东知道为什么吗?
------解决方案--------------------
printf属于行缓冲机制. 您需要添加换行符作为驱动信号; _exit直接调用系统调用以结束该过程printf输出字符串不加换行符,而无需检查io缓冲区.
------解决方案--------------------
在每个不带\ n的printf之后,添加fflush(stdout);

------解决方案--------------------
_exit不执行尾扫,例如flushprintf缓冲区中的字符.

老梅对阿里进入美国市场有何看法?

如果要结婚,请与程序猿结婚-金钱比死亡更重要.


不了解技术. 不要告诉知道技术的人. 易于实现.

程序员每天工作4个小时

10条调试和故障排除技巧

10个帮助程序员放松身心的网站

十种编程算法帮助程序员成为大师

为什么程序员是夜猫子
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-155136-1.html
再一个咱们国家的大型舰艇应该继续建造