我使用的fread讀入一個字符緩存器編號。的fread()返回的讀出字節+ 1
char buffer[50];
int nbytes = fread(buffer, 1, 50, fp);
我從讀取的文件實際上包含了字你好,即5個字節。 在上例中,nbytes
等於6.爲什麼?
此外,從零字節文件讀取(即它是空的)返回0
我使用的fread讀入一個字符緩存器編號。的fread()返回的讀出字節+ 1
char buffer[50];
int nbytes = fread(buffer, 1, 50, fp);
我從讀取的文件實際上包含了字你好,即5個字節。 在上例中,nbytes
等於6.爲什麼?
此外,從零字節文件讀取(即它是空的)返回0
我的猜測是,無論寫給你正在閱讀的文件可能包含在一個換行符(如果它是一個文本文件)或字符串後的0個字節。如果您在UNIX上,運行以下命令:
od -c filename
,它將打印包括非printables文件的全部內容。
您還可以運行:
wc --bytes filename
,它將打印文件的字節長度(連同文件名)。
嘗試'xxd文件名'獲取更多信息。另外'--bytes'可能不能作爲所有平臺上的一個'wc'的說法,更喜歡'-c' – pb2q
的確。它看起來像* gedit *正在向文件添加換行符,但不會在編輯器中顯示它。謝謝! –
也許它添加0終止? – 2012-06-27 19:33:09
該文件是否包含換行符? –
'fread()'和'fwrite()'返回成功讀取或寫入的項目數。說他們返回一些字節是不正確的。雖然在你的情況下,因爲元素大小是1,但它是相同的。但仍然。 – 2012-06-27 19:35:37