2013-04-02 32 views
0

我正在搜索當前目錄中的目錄,如果我跨目錄,我進入並搜索目錄和文件,但我找不到問題。我總是得到相同的結果和一些特定的目錄。在代碼中,我得到數組中的目錄名並打印它們。結果如下所示;如何打印這些目錄下的所有目錄和文件?

direc Num (except parent and curr) : 6 

/home/sabri/Desktop/Test/Untitled Folder 3 

/home/sabri/Desktop/Test/Untitled Folder 3 

/home/sabri/Desktop/Test/Untitled Folder 3 

/home/sabri/Desktop/Test/Untitled Folder 3 

/home/sabri/Desktop/Test 

/home/sabri/Desktop/Test/Untitled Folder 4 

/home/sabri/Desktop/Test/Untitled Folder 4 

/home/sabri/Desktop/Test/Untitled Folder 4 

但我的目錄是;

Untitled Folder 1 

Untitled Folder 2 

Untitled Folder 3 

Untitled Folder 4 

Untitled Folder 5 

int listFilesIndir(char *currDir) 
{ 
    struct dirent *direntp; 
    char newDir[20][250]; 


    DIR *dirp; 
    int x ,y =0,i=0 ; 


    if ((dirp = opendir(currDir)) == NULL) 
    { 
     perror ("Failed to open directory"); 
     return 1; 
    } 

    while ((direntp = readdir(dirp)) != NULL) 
    { 
     printf("%s\n", direntp->d_name); 
     if(direntp->d_type == DT_DIR) 
     { 
      y++; 
      chdir(direntp->d_name); 
      getcwd(newDir[i],250); 
      listNewDir(direntp->d_name); 
      i++; 

     } 
    } 

    printf("direc Num (except parent and current) : %d\n",y-2); 

    for (i = 0; i < 10; ++i) 
    { 
     printf("%s\n", newDir[i]); 
    } 

    while ((closedir(dirp) == -1) && (errno == EINTR)) ; 

    return 0; 
} 


int listNewDir(char *currDir) 
{ 
    struct dirent *direntp; 
    DIR *dirp; 

    if ((dirp = opendir(currDir)) == NULL) 
    { 
     perror ("Failed to open directory"); 
     return 1; 
    } 

    while ((direntp = readdir(dirp)) != NULL) 
     printf("%s\n", direntp->d_name); 

    while ((closedir(dirp) == -1) && (errno == EINTR)) ; 

    return 0; 
} 
+0

您可能會發現[ftw] [1](文件樹步行)在這裏有幫助! [1]:http://linux.die.net/man/3/ftw – Joe

+0

@joe:當添加評論時,請點擊「幫助」鏈接查看如何在評論中嵌入鏈接 - 它不是與Q&A編輯器中使用的Markdown語法相同。 – Clifford

+0

@Clifford Ta,我想知道我搞砸了什麼! :-) – Joe

回答

0

你需要跳過 ''和'..'條目。你也不應該做chdir和getcwd。只需將目錄名稱傳遞給listNewDir函數即可打印該目錄中的文件。 (如果要保存名稱,則可以將名稱strcpy放入newDir中。)
此外,for循環僅上升到10,newDir僅適用於20個條目。我認爲那些只是爲了測試。

相關問題