0
我在C遞歸函數:傳遞打開目錄作爲參數
void dir(char *file_name, char *dir_name) {
DIR *f=opendir(dir_name);
if(f==NULL)
perror(dir_name);
else {
struct dirent *a;
while((a=readdir(f))!=NULL) {
if(strcmp(a->d_name,".")!=0 && strcmp(a->d_name,"..")!=0 && a->d_type==4) {
char s1[250];
strcpy(s1,dir_name);
if(s1[strlen(s1)-1]!='/')
strcat(s1,"/");
strcat(s1,a->d_name);
if(strcmp(a->d_name,file_name)==0)
{
printf("%s\n",s1);
n++;
}
dir(file_name,s1);
}
else
{
if(strcmp(a->d_name,file_name)==0)
{
n++;
}
}
}
closedir(f);
}
}
其實際作用:它看起來「FILE_NAME」內部「DIR_NAME」及其子文件夾和算怎麼可能次「FILE_NAME」出現在該層次結構中。
我簡單地稱之爲main()
就像dir(argv[1],argv[2]);
(一些C參數「./program_name file_to_find.txt directory
」)。
其實一切正常,但我不想打開void dir()
內的目錄。我希望它在main()
中打開,並將其數據作爲參數傳遞給dir()
(因此參數char *dir_name
)應該被修改。
有沒有辦法做這樣的事情(將打開的目錄作爲參數傳遞給函數)?
什麼'dir_name'參數?看起來像你不通過'main()' – stefanz
@stefanz確實,它現在工作嗎? –
是的,它的工作原理。謝謝。 'dir()'裏面的'n'看起來有些問題,因爲它是從函數中拋出的,但是暫時沒有想到,我在全局中使用它(這是一個小程序,只是這個void和main)。 – stefanz