私のプログラムは、1つのフォルダの深さまでしか循環しません。私がそれを実行すると、プログラムはフォルダ1のフォルダの名前を出力し、それを入力してそのファイルをリストアップするのではなく、その名前を出力します。Cプログラムファイル/フォルダ検索の繰り返し数
void getFilesInDirectory(char *loc){
struct dirent *dirp;
DIR *rec;
struct stat f_info;
char full[PATH_MAX + 1];
rec = opendir(loc);
while ((dirp = readdir(rec)) != NULL)
{
if(strcmp(dirp->d_name,".") != 0 && strcmp(dirp->d_name,"..") != 0){
stat(dirp->d_name, &f_info);
_fullpath(full, dirp->d_name, PATH_MAX);
if(S_ISDIR(f_info.st_mode)){
getFilesInDirectory(full);
}else{
printf("%s\n", dirp->d_name);
}
}
}
close(rec);
}
出力:
フォルダ1、フォルダ2 Insideは、それぞれfile3.txtとfile4.txtですが、プログラムは、それらを表示されません。だから私の出力は
file1.txt
file2.txt
file3.txt
file4.txt
する必要があります再帰が1つのフォルダ深い
LOCそれを渡していないので、私はまた、あなたの_fullpath機能は仕事ができる方法を見ることができないよろしいですか?私は問題を見ません。デバッガを試してください。 –
_fullpathはおそらく現在のディレクトリレベルで動作します。 /で区切られたファイル名にディレクトリ名を連結してみてください。 – cup