次のコードはパスを開き、ディレクトリを再帰的に読み込んでその中のファイルを出力します。現時点では、ディレクトリへのパスとその中のすべてのファイルを出力していますが、訪問したすべてのファイルへのフルパスを含む1つのchar *変数を含むリンクリストを実装したいと思います。この再帰関数をリンクされたリストにコンテンツを保存するにはどうすればよいですか?
#include <dirent.h>
#include <stdio.h>
#include <string.h>
void show_dir_content(char * path)
{
DIR * d = opendir(path);
if(d==NULL) return;
struct dirent * dir;
while ((dir = readdir(d)) != NULL)
{
if(dir-> d_type != DT_DIR) // if the type is not directory just print it
printf("\t%s\n",dir->d_name);
else
if(dir -> d_type == DT_DIR && strcmp(dir->d_name,".")!=0 && strcmp(dir->d_name,"..")!=0) // if it is a directory
{
char d_path[255]; // here I am using sprintf which is safer than strcat
sprintf(d_path, "%s/%s", path, dir->d_name);
printf("%s\n",d_path);
show_dir_content(d_path);
}
}
closedir(d);
}
int main(int argc, char **argv)
{
show_dir_content(argv[1]);
return(0);
}
リンクリストに使用する構造体のような非常に簡単になります:
ここにコードだ私は構造体のmallocをを使用して困難な時期を過ごしてい
typedef struct search search;
struct search {
char *path;
char *fileName;
char *fullPathToFile;
search *next;
};
はと再帰関数内で実際のリンクリストを作成します。どんな助けもありがとうございます。
広すぎる質問にそれを渡します。あなたが抱えている正確な問題は何かを特定してください。 – user694733
@ user694733私の問題は質問の最後に明記されています。 – user100000
曖昧な問題のリストが表示されています。構造タイプを定義することができました。次のステップは何ですか?それが 'malloc'でメモリを割り当てているとすれば、あなたは何を持っているのですか?コンパイルエラーメッセージ?私たちが答えることができるという明確な質問があるまで、あなたの問題を小さな問題に分解してください。 – user694733