我有一個包含〜15000個目錄(B1,B2,..,B15000)的目錄(我們稱之爲目錄A),B的每個目錄包含一個文件稱之爲「原始」),我想讀。 所以我想讀: A/B1 /生 A/B2 /生 ...dirent處理的文件/目錄的最大數目struct
我不知道B的目錄名提前,但我知道目錄A和它的名字每個B的目錄中都有一個名爲raw的文件。
因此,我使用dirent爲了打開A並移動它中的所有目錄 - 提取包含在d_name字段中的名稱,但在讀取264個目錄的名稱後停止運行!
我不知道結構dirent不能容納超過264個目錄嗎?誰能幫我 ?
謝謝先進。
[代碼從評論]
DIR* dRoot = opendir(argv[1]);
assert(dRoot != NULL);
struct dirent* dir;
while((dir = readdir(dRoot)))
{
//suppose dirName is a string "argv[1]/dir->d_name/raw"
FILE* file = fopen(dirName,"r");
//do something
fclose(file);
}
closedir(dRoot);
*您如何閱讀目錄?你能告訴我們一些代碼嗎?最好是[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 –
DIR * dRoot = opendir(argv [1]); assert(dRoot!= NULL); struct dirent * dir; (dir = readdir(dRoot))){ //假設dirName是一個字符串「argv [1]/dir-> d_name/raw」 FILE * file = fopen(dirName,「r」); //做某事 fclose(file); } closedir(dRoot); 我看到的是,我走出了這個循環,雖然我沒有檢查所有依賴dRoot的目錄!好像「dir-> d_name」在目錄號264之後包含NULL! – user3527261
我假設你檢查當前目錄和父目錄(名稱分別是'「。」'「和'」..「')?另外,該程序的參數是什麼('argv [1]')?你檢查文件是否正確打開(即'file'不是'NULL')?你檢查它是一個目錄而不是文件?你如何創建和初始化'dirName'? –