我的程序到底哪里出错了?如何递归才对
/*在指定目录及其子目录里查找指定文件,把全部列出,用c语言实现,在linux里通过*/
#include <dirent.h>
#include <stdio.h>
#include <stdlib.h>
void find(char *dirname,char *filename)
{
DIR *dir;
struct dirent *ent;
char *tmpbuf=(char*)malloc(0x100);
char *cwd_temp,*name_temp;
int i,j;
printf("First pass on '%s':\n",dirname);
if ((dir = opendir(dirname)) == NULL)
{
perror("Unable to open directory");
exit(0);
}
printf("%s\n",getcwd(NULL,128));
while ((ent = readdir(dir)) != NULL)
printf("\t%s",ent->d_name);
printf("\n");
printf("Second pass on '%s':\n",dirname);
rewinddir(dir);
while ((ent = readdir(dir)) != NULL)
{
if(strcmp(filename,ent->d_name)==0)
{ printf("%s",getcwd(NULL,128));
printf("/%s\n",ent->d_name);
/* break;*/
}
/**************************************************************/
getcwd(cwd_temp,128);
strcpy(name_temp,ent->d_name);
if(name_temp!="."&&name_temp!="..")
{
for(i=0;i<=strlen(cwd_temp)-2;i++)
tmpbuf[i]=cwd_temp[i];
tmpbuf[i]="\\";
i++;
for(j=0;j<=strlen(name_temp)-1;j++)
tmpbuf[i+j]=name_temp[j];
find(tmpbuf,filename);
}
/***************************************************************/
}
if (closedir(dir) != 0)
perror("Unable to close directory");
return;
}
int main(int argc,char *argv[])
{
if (argc != 3)
{
printf("usage: opendir dirname\n");
exit(1);
}
find(argv[1],argv[2]);
exit(0);
}
问题点数:0、回复次数:2Top
1 楼ww2003(参数1编程,参数2健身,参数3美女)回复于 2003-02-07 12:39:31 得分 0
你能把dirent.h给出来吗?Top
2 楼QWY2000(冷剑白狐2000)回复于 2003-02-07 17:25:32 得分 0
c语言自带的啊
你的没有吗
linux里也是自带了啊Top




