[問題] 列舉給定目錄中所有目錄、子目錄、檔案 …

看板C_and_CPP (C/C++)作者 (回到最初...)時間14年前 (2011/07/25 16:43), 編輯推噓1(1016)
留言17則, 5人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 2005 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 使用WIN的API 問題(Question): 遞回搜尋會出現問題 餵入的資料(Input): 自填電腦路徑 預期的正確結果(Expected Output): 找出路徑資料夾下,所有檔案及目錄及子目錄名稱 程式碼(Code):(請善用置底文網頁, 記得排版) #include "stdafx.h" #include <windows.h> #include <tchar.h> #include <stdio.h> #include<shlobj.h> #include <strsafe.h> void EnumerateFolders (); void _tmain(int argc, TCHAR *argv[]) { :: SetCurrentDirectory (_T ("F:\\EZhost")); EnumerateFolders (); } void EnumerateFolders () { WIN32_FIND_DATA fd; HANDLE hFind = ::FindFirstFile (_T ("*.*"), &fd); if (hFind != INVALID_HANDLE_VALUE) { do { if (!(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { _tprintf(TEXT("File %s <DIR>\n"), fd.cFileName); //檔案 system("pause"); } else { _tprintf(TEXT("Folder %s <DIR>\n"), fd.cFileName); //資料夾 system("pause"); /*::SetCurrentDirectory ( fd.cFileName ); EnumerateFolders (); :: SetCurrentDirectory (_T (".."));*/ } }while ( ::FindNextFile ( hFind, &fd) ); ::FindClose (hFind); } } 補充說明(Supplement): 我想用遞回的方法,找出指定路徑下所有的檔名 目前,這程式已可以找出第一層的所有目錄名及檔名 但只要我將MARK的部分(遞回)加入,就會出錯 我希望在這部分,可以再深入到第二層去搜尋 ......一直遞回到搜尋完全部 請問一下大大們,我真的不知道錯在哪 可以告訴我錯在哪嗎?? 該怎麼修正呢?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.248.161.28 ※ 編輯: BigTaro 來自: 60.248.161.28 (07/25 16:47)

07/25 16:56, , 1F
記得 "." 和 ".." 不要遞迴下去阿...
07/25 16:56, 1F

07/25 16:57, , 2F
還有, 因為存取權限的關係, 當 SetCurrentDirectory 失敗
07/25 16:57, 2F

07/25 16:57, , 3F
要處理一下 (就乾脆放棄列舉那個資料夾吧)
07/25 16:57, 3F

07/25 17:02, , 4F
我有用過
07/25 17:02, 4F

07/25 17:03, , 5F
if((fd.cFileName!=_T("."))&&(fd.cFileName!=_T("..")))
07/25 17:03, 5F

07/25 17:05, , 6F
但資料類別不同,無法比較,大大有什麼建議嗎??
07/25 17:05, 6F

07/25 17:06, , 7F
07/25 17:06, 7F

07/25 17:37, , 8F
t大為什麼你都可以快速找到文章,有什麼訣竅嘛?
07/25 17:37, 8F

07/25 17:55, , 9F
因為那篇是我寫的.對文章列表按下a,再輸入作者,可把
07/25 17:55, 9F

07/25 17:55, , 10F
文章都有自存一份吧
07/25 17:55, 10F

07/25 17:55, , 11F
該作者所有發表過文章都列出來。
07/25 17:55, 11F

07/25 17:55, , 12F
對不起我插話了 \囧>
07/25 17:55, 12F

07/25 17:57, , 13F
實在是太巧了,四樓都擠在同一分鐘.
07/25 17:57, 13F

07/25 17:59, , 14F
ericinttu 文章要怎樣自存阿? 有特殊按鍵嘛?
07/25 17:59, 14F

07/25 18:00, , 15F
存文章可以寄到mail信箱,或用軟體下載.
07/25 18:00, 15F

07/25 18:32, , 16F
shift+f 可把文章轉寄到外面一般email address
07/25 18:32, 16F

07/25 21:11, , 17F
thanks
07/25 21:11, 17F
文章代碼(AID): #1EBIp3LM (C_and_CPP)
文章代碼(AID): #1EBIp3LM (C_and_CPP)