對於一個賦值,我應該創建兩種方法:方法一將read()
和write()
輸入到一個空輸出文件,一次一個字節(緩慢)。如何在C中使用BUFSIZ的讀寫方式
另一種方法將改爲使用char buf[BUFSIZ];
其中BUFSIZ
來自<stdio.h>
。我們應該read()
和write()
與BUFSIZ
這將使事情快很多。
我們測試每種方法的輸入文件只是一個linux字典(/dict/linux.words
)。
我已經正確實施了方法之一,我一次只對一個字符調用read()
和write()
,將輸入文件複製到輸出文件。雖然速度很慢,但至少可以複製一切。
我給這家代碼如下所示:
// assume we have a valid, opened fd_in and fd_out file.
char buf;
while(read(fd_in, buf, 1) != 0)
write(fd_out, buf, 1);
對於方法二然而,當我使用BUFSIZ
,我不能給每一個進入輸出傳輸文件。它在z
條目中失敗,並且不再寫入。
所以,我第一次嘗試:
// assume we have a valid, opened fd_in and fd_out file
char buf[BUFSIZ];
while(read(fd_in, buf, BUFSIZ) != 0)
write(fd_out, buf, BUFSIZ);
不起作用。
據我所知,read()
將返回讀取的字節數或0,如果它在文件的末尾。我遇到的問題是瞭解如何將read()
與BUFSIZ
進行比較,然後在停止的地方循環並開始read()
,直到達到文件的實際末尾。
...'結果=讀(..);如果(結果
usr2564301
2015-02-06 10:54:09
@Jongware現在呢:/因爲midterms/projects已經連續兩天了,所以我的大腦很油膩:( – Alex 2015-02-06 11:02:07