-1
對於我的作業之一,我必須讀取一個文件(〜100行)。 爲了處理文件的內容並提取所有行,我使用函數stat分配一個文件大小的緩衝區。我用這個緩衝區讀取功能讀取的文件。 我被告知這種方法很髒。stat獲取文件的大小並複製它
爲什麼它被認爲是髒?我認爲如果文件很短,這意味着char數組的大小是可以接受的,這意味着只有幾個系統調用?
對於我的作業之一,我必須讀取一個文件(〜100行)。 爲了處理文件的內容並提取所有行,我使用函數stat分配一個文件大小的緩衝區。我用這個緩衝區讀取功能讀取的文件。 我被告知這種方法很髒。stat獲取文件的大小並複製它
爲什麼它被認爲是髒?我認爲如果文件很短,這意味着char數組的大小是可以接受的,這意味着只有幾個系統調用?
如果您的文件是符號鏈接而不是常規文件,那麼您將獲得「符號鏈接中包含的路徑名的字節長度」。所以你不應該用它來獲取文件長度。你可以在返回的struct stat的文檔中看到它。 (http://pubs.opengroup.org/onlinepubs/009695399/basedefs/sys/stat.h.html)
你應該問那些說方法很髒。 – 2014-10-02 18:10:44
我應該問。現在已經太晚了。 – bandera 2014-10-02 18:11:36
我想你應該先檢查文件是否是普通文件。 '''stat'''可以告訴你。除此之外,您可以安全地使用stat檢查文件大小。查看[man](http://pubs.opengroup.org/onlinepubs/000095399/basedefs/sys/stat.h.html)---'''struct stat。 st_size''' ---對於普通文件,文件大小以字節爲單位。對於符號鏈接,包含在符號鏈接中的路徑名的字節長度。 – 2014-10-02 18:13:34