stdio文件描述符(stdin,stdout,stderr)是否只能从#include'ing <stdio.h>打开?

Ror*_*ney 3 c linux

在将整数转换为C中的字符串时,我对包含有点恼火stdio.h- 不会用不必要的文件描述符和其他代码来破坏二进制文件吗?或者,流,如果你使用标准的IO文件描述符标准输出,标准输入,或标准错误在你的代码只开了,如用printf,scanf,fprintf?如果我的代码只使用它,它还可以snprintf(3)吗?

我最接近的现成解决方案是将整数转换为双精度浮点,strfromd(3)使用不打印小数点的格式字符串.

bhuwansahni如何将整数转换为C中的字符串中给出了一个很好的自己动手解决方案

我不知道怎么用(联没有工作)itoa,_itoa_fitoa_word虽然_fitoa_word不显示为一个功能nm /lib64/libc6.so.6.

iBu*_*Bug 5

即使您不包括,它们也会打开stdio.h.它们是程序的标准流,并在运行时打开.

程序在实际执行之前需要进行一些初始化.这包括加载符号表,分配内存,初始化静态数据和链接动态库等.此时打开标准流.然后控件进入main()程序中的函数并开始执行.

对于第二个问题,标准IO不会使程序膨胀,因为您的程序几乎总是与标准C库libc链接,并且通常是动态链接(因此它不会增加可执行文件的大小).

是的,如果你不使用它们就没问题.只使用类似的东西snprintf(),你可以做得很好,但仍然会打开标准流.使用它们与否并不重要.

谢谢Paul Ogilvie