[英]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.