簡體   English   中英

以二進制模式寫入標准輸出的最簡單方法是什么?

[英]What is the simplest way to write to stdout in binary mode?

我一直在試圖找出將二進制數據從 C 程序寫入標准輸出的最佳方法。 它在 Linux 上運行良好,但在 Windows 上編譯時遇到問題,因為“\\n”被轉換為“\\r\\n”。

是否有一種標准方法可以避免換行轉換,以某種二進制模式寫入 stdout? 如果沒有,讓 Windows 停止這樣做的最簡單方法是什么?

我正在使用 GCC 和 MinGW,並使用fwrite寫入stdout

您可以使用setmode(fileno(stdout), O_BINARY)

如果您想讓它與 Linux 兼容,請將其包裝在 ifdef 中。

另見: https : //docs.microsoft.com/en-us/cpp/c-runtime-library/reference/setmode?view=vs-2017

你可以做這樣的事情(這是一種跨平台):

FILE *const in = fdopen(dup(fileno(stdin)), "rb");
FILE *const out = fdopen(dup(fileno(stdout)), "wb");
/* ... */
fclose(in);
fclose(out);

或者您可以直接將write()read()系統調用與fileno(stdin)fileno(stdout) 這些系統調用在較低級別上運行並且不進行任何轉換。 但是它們也沒有您從FILE流中獲得的緩沖。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM