這個程序是打印在根級別印刷全部採用C++
Directory_1
Directory_2
的目錄,但我希望能夠在其中打印目錄太
Directory_1
Directory_1_2
Directory_1_3
Directory_2
Directory 2_1
Directory_2_1_1
Directory_4
我試圖目錄做遞歸,但我發現很難通過Directory_1作爲根,因此得到評估..我錯過了什麼?
這裏是我的輸出
..
.
Directory_1
Directory_2
Failed to open directory: No such file or directory
代碼
#include <dirent.h>
#include <errno.h>
#include <stdio.h>
#include <sys/stat.h>
char *arg_temp;
int printDepthFirst(char *arg_tmp);
int main(int argc, char *argv[]) {
if (argc != 2) {
fprintf(stderr, "Usage: %s directory_name\n", argv[0]);
return 1;
}
arg_temp = argv[1];
printDepthFirst(arg_temp);
}
int printDepthFirst(char *arg_tmp)
{
struct dirent *direntp;
DIR *dirp;
if ((dirp = opendir(arg_tmp)) == NULL) {
perror ("Failed to open directory");
return 1;
}
while ((direntp = readdir(dirp)) != NULL)
{
printf("%s\n", direntp->d_name);
arg_tmp = direntp->d_name;
}
printDepthFirst(arg_tmp);
while ((closedir(dirp) == -1) && (errno == EINTR)) ;
return 0;
}
現在,我知道問,他們認爲我期待他們能夠編寫這個問題時,有些人感到惱火,你不需要,如果你可以告訴我理論上我需要做什麼..我會研究它,但如果它的一個小程序修復,你可以發佈,我真的appreaciate它..但如果不是..我也很想聽聽有什麼需要要用文字完成。
謝謝
人們感到惱火,因爲你沒有花太多的時間去自己解決的事情。你得到'沒有這樣的目錄',那麼你做了什麼來調試呢?你打印出了要打開的目錄名稱嗎?它是否與當前目錄中的名稱相對應?如果不是,你認爲你可以做些什麼來使它工作? (並且在你的網站上有目錄遍歷的例子。) – Mat
嗯我已經花了很長一段時間,你的假設是不正確的..你不能在不知道的情況下就在飛行中進行判斷..我嘗試過不同的事情。 。是的,我嘗試了上述所有內容,並在我的文章中提到了錯誤 – user975582
您需要花更多時間思考您的代碼並學習調試它。您發佈的代碼沒有單獨的「調試」打印輸出,因此根本不清楚您明白髮生了什麼。如果您在代碼運行時打印出來的東西,或者使用調試器,您會更好地感受代碼的實際工作方式,並且您將瞭解需要做什麼來修復它。但是你真的需要去思考你的code_,並且通過在每一步中儘可能多地調試信息來幫助你自己。 – Mat