[英]Redirecting program output in C, use fprintf or "more widely used" solution?
Noob Q,最佳實踐相關:
我正在使用 yacc/lex/C 為 macOS 編寫 MS BASIC 解釋器。 它對PRINT
和INPUT
使用scanf
/ printf
。 我想添加一個 CLI 選項來將它們重定向到文件。
我知道如何在技術上做到這一點,使用 fopen/fclose 和 fprintf 等。但是“真正的”Unixen 程序會這樣做嗎? 當其他人檢查代碼時,我希望盡可能地標准以避免混淆。
在通用的 Unix/Linux/FBSD 上,你會...
printf
與fprintf(fp,
和默認fp
到stdout?printf
s 但重定向stdout
?(對於一般程序)
簡單地依賴父級(如 shell)的正常重定向並沒有錯,但是如果您想為此提供一個參數(這也很好)。
至於使用printf
或fprintf
,我看不出太大區別。 我可能會根據典型情況選擇一種或另一種。 如果它幾乎總是在 stdout 上輸出,則可能會使用 printf 和 fprintf 否則。 可能令人困惑的部分是閱讀您代碼的另一個人可能沒有意識到printf
不是程序標准輸出(至於重定向,您可以使用freopen
或 -before 使用 stdio- dup2(, 1);
)。
(對於您的 BASIC 口譯員)
在這種情況下,當您翻譯INPUT
和PRINT
, scanf
和printf
似乎是合乎邏輯的選擇,我不確定為什么您需要一個選項來將它們更改為其他內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.