簡體   English   中英

如何通過鍵入C獲取目錄下所有文件的列表

[英]How to Get list of all file under the directory by type in C

我必須在C模擬unixls函數。

我必須創建一個程序“通過C鍵入獲取任何目錄下的所有文件”。

我搜索並找到了獲取文件列表的程序,但是它們是按字母順序排序的; 我想按文件類型排序。 拜托,有人可以幫我嗎?

必須將文件存儲在內存中的某個位置。 由於這看起來像是一個學校項目,因此建議將文件名加載到鏈表中,並采用其中一種算法對鏈表進行排序。 這很可能是練習本身的目的。

對於file type我們假設“擴展名”,即即使某人可能已重命名.WMA文件並將其命名為.MP3,.MP3的類型也是“ Fraunhofer MPEG Layer 3”。 要檢測“ true”文件類型,您需要使用一種稱為“ magic file”的文件,並且那里有一個libmagic,但這值得嗎? (如果是博士學位論文或商業課程,答案為“是”。如果該課程由您的普通教授評分,則您可以判斷是否有被認為“太聰明”的風險)。

鏈接列表條目應為包含文件名和指向其擴展名的指針的struct 通過考慮擴展名是“文件名中最后一個點之后的內容”,可以找到此最后一個,因此可以利用strrchr函數。 請記住,某些文件沒有擴展名。

您可以判斷是否采用節省內存的技巧,例如存儲指向擴展的指針,或使用strdup復制擴展。 前者更快,更精簡,但是您必須記住,必須釋放第一個結構指針(文件名),而絕對不能釋放第二個結構指針。 取決於您是重視維護時間還是速度/內存,讓兩個指針的行為不同可能被認為是不好的編碼習慣(是)或聰明的破解(事實)。

至於文件名本身的檢索,沒有萬能的方法,因此導致了Boost等庫的開發。 但是對於學校項目,也許您可​​以限制為POSIX系統,並使用opendirreaddirclosedirstat

一個好的做法和明智的選擇是將不同功能中的操作(目錄檢索,列表排序,列表顯示)分開,以便您可以分別和漸進地對其進行測試(例如:文件夾檢索確實可以檢索所有內容,並且可以以未排序的順序顯示文件等)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM