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