【发布时间】:2015-01-07 20:12:52
【问题描述】:
我在 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);
}
}
它的实际作用:它在“dir_name”及其子文件夹中查找“file_name”,并计算“file_name”在该层次结构中出现的次数。
我只是在main() 中调用它,比如dir(argv[1],argv[2]);(一些带有参数“./program_name file_to_find.txt directory”的C 程序)。
实际上一切正常,但我不想打开void dir() 中的目录。我希望它在main() 中打开并将其数据作为参数传递给dir()(因此参数char *dir_name)应该被修改。
有没有办法做这样的事情(将打开的目录作为参数传递给函数)?
【问题讨论】: