簡體   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