簡體   English   中英

fwrite是否刷新'\\ n'上的緩沖區?

[英]Does fwrite flush the buffer on '\n'?

我有自己的執行_open() _close() _write() _read()

我的代碼:

FILE *f = fopen("0:test", "wb");  // calls _open()
fwrite("hello ", 6, 1, f);
fwrite("world\r\n\0", 8, 1, f); // calls _write(3, "hello world\r\n", 13)
fflush(f);                      // calls _write(3, "\0", 1)
fclose(f);                      // calls _close(3)

BUFSIZE是1024

編譯: arm-none-eabi-gcc /版本: 5.4.1

為什么fwrite()解釋'\\n'即使我有標志"wb"

fopen()是否解釋文件名"0:test"

為什么fwrite()解釋'\\n'即使我有標志"wb"

因為流是行緩沖的。 流是否會變為行緩沖不是由傳遞給fopen()的標志決定的。

您使用的工具鏈附帶Red Hat的newlib,它在第一次嘗試讀取或寫入流時調用isatty()函數。 如果isatty()返回非零值,則流將進行行緩沖。

如果您不喜歡它,可以修改_isatty()以返回0 ,或者在fopen()之后調用setvbuf() fopen()

fopen()是否解釋文件名"0:test"

不,任何文件名都將直接傳遞給_open()

暫無
暫無

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

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