我正在做一個程序,它在命令行參數中讀取一個文件,併爲它讀取的每個單詞創建一個新文件。用read讀取一個文件word()
Ex。 1個10字的文件變成----> 10個文件,每個文件一個字。
我已經使用fread,fwrite,fget等工作,但是我們只允許使用read()和write()來讀寫文件。這樣做,這樣的時刻似乎很難得離譜,也不必,我開始覺得我們的老師只是告訴我們錯了,所以我的三個問題是:
- 這是可能的嗎?
- 是否通過操作read()的字節來完成?
- 有人能在外行的術語)解釋如何操作讀(/寫()採取不同長度的各種單詞
我明白閱讀()從輸入流中讀取,然後把它放到一個緩衝區但是我非常確定它不像Java那樣可以給它一個開始和停止位置,它會讀取它們之間的所有內容,然後繼續從位置停止+1讀取數據。
(1)是的!如果你可以用'fread()'和'fwrite()'(和'fopen()'和'fclose()')來完成,那麼你可以用文件描述符I/O函數來完成。每個函數都有一個直接的映射 - 假設文件是一個磁盤文件,而不是像終端或管道或FIFO那樣的不可搜索的設備,並且您從未嘗試「ungetc()」一個您沒有剛剛閱讀。 (2)查看代碼會更容易,但是您可以輕鬆編寫一些小功能來執行與標準I/O功能相同的工作。 (3)像'fread()'和'fwrite()',但是你只需要簡單的字節數。 – 2014-09-20 17:34:11
關於你的最後一段:你是如何用'fread'等來管理的? – mafso 2014-09-20 18:01:46
如果你使用'fread'工作,你已經使用'read'工作,只要你自己處理由'stdio'庫提供的任何通常的緩衝。行爲是不同的(例如,你可能會讀/寫少於預期的字節),但是想法是一樣的:讀取字節,將讀取的字節中的單詞寫入單獨的文件中,說明部分單詞讀取的情況。 – 2014-09-21 00:16:54