![](/img/trans.png)
[英]What is the simplest way to write 4 arrays into a file in a multiplatform way?
[英]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.