繁体   English   中英

在 C 中重定向程序输出,使用 fprintf 还是“更广泛使用”的解决方案?

[英]Redirecting program output in C, use fprintf or "more widely used" solution?

Noob Q,最佳实践相关:

我正在使用 yacc/lex/C 为 macOS 编写 MS BASIC 解释器。 它对PRINTINPUT使用scanf / printf 我想添加一个 CLI 选项来将它们重定向到文件。

我知道如何在技术上做到这一点,使用 fopen/fclose 和 fprintf 等。但是“真正的”Unixen 程序会这样做吗? 当其他人检查代码时,我希望尽可能地标准以避免混淆。

在通用的 Unix/Linux/FBSD 上,你会...

  1. 替换所有printffprintf(fp,和默认fp到stdout?
  2. 保留所有printf s 但重定向stdout
  3. 依赖外壳和管道,而根本不将其作为 CLI 选项提供?

(对于一般程序)

简单地依赖父级(如 shell)的正常重定向并没有错,但是如果您想为此提供一个参数(这也很好)。

至于使用printffprintf ,我看不出太大区别。 我可能会根据典型情况选择一种或另一种。 如果它几乎总是在 stdout 上输出,则可能会使用 printf 和 fprintf 否则。 可能令人困惑的部分是阅读您代码的另一个人可能没有意识到printf不是程序标准输出(至于重定向,您可以使用freopen或 -before 使用 stdio- dup2(, 1); )。

(对于您的 BASIC 口译员)

在这种情况下,当您翻译INPUTPRINTscanfprintf似乎是合乎逻辑的选择,我不确定为什么您需要一个选项来将它们更改为其他内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM