如何将控制台作为FILE*参数传入C库函数foo实现输出到终端
可行方案
完全可以实现,C标准库已经预定义了关联控制台的FILE*类型全局指针,无需额外创建文件对象,直接传入调用即可。
可用的标准流指针
stdout:标准输出流,对应控制台常规输出通道,默认带行缓冲,写入内容攒到换行或者缓冲区满后输出到控制台,是绝大多数场景下的首选。stderr:标准错误流,同样输出到控制台,默认无缓冲,写入内容会立刻打印到控制台,适合需要即时查看输出、不允许内容滞留在缓冲区的场景。
调用示例
直接将上述指针作为参数传入foo函数即可:
// 输出到控制台常规输出 foo(stdout); // 若需要即时输出无缓冲,走错误流通道 foo(stderr);
平台兼容注意事项
上述方案是C标准规定的通用实现,Windows、Linux、macOS全平台均可正常使用。
若在Windows平台需要输出UTF-8编码的非ASCII字符,可提前调用系统接口调整stdout编码模式:#include <fcntl.h> #include <io.h> // 调整stdout为UTF-8编码模式,避免中文乱码 _setmode(_fileno(stdout), _O_U8TEXT);
内容的提问来源于stack exchange,提问作者Gilbert Waltoon
相关产品推荐
相关产品推荐

