Join With Me...

3:00 AM

Recursive File System Search Program in C

#include
#define MAX 500
char *sta[650],temp[MAXPATH];
struct ffblk ffblk;
unsigned long file,dir;
int done,pos=-1;
FILE *fp;
char * pop(void);
void push(char *);

void main()
{
char buffer[MAXPATH];
void find(char *);
fp=fopen("c:/t.txt","wb");
clrscr();
puts("Enter The Dirname (Ex: F:/fir/)");
scanf("%s",buffer);
find(buffer);
getch();
}

void find(char *dirname)
{
char temp[MAXPATH],temp1[MAXPATH];
int t,i;
if(!strcmp(dirname,NULL) || *dirname==NULL)
{
printf("\nSuccess!!!");
printf("\nFILE: %lu \nDIRE: %lu\n",file,dir);
getch();
exit(0);
}
strcpy(temp,dirname);
strcat(temp,"*.*");
t=strlen(dirname);
fwrite(dirname,t,1,fp);
fputc('\n',fp);
for(i=0;i
fputc('*',fp);
fputc('\n',fp);
done=findfirst(temp,&ffblk,FA_DIREC);
while(!done)
{
strcpy(temp1,dirname);
if(ffblk.ff_attrib==FA_DIREC)
{
if(*ffblk.ff_name!='.')
{
dir++;
strcat(temp1,ffblk.ff_name);
strcat(temp1,"/");
fwrite(ffblk.ff_name,sizeof(ffblk.ff_name),1,fp);
fwrite("\t

\n",7,1,fp);
push(temp1);
*temp1='\0';
}
}
else
{
file++;
fwrite(ffblk.ff_name,sizeof(ffblk.ff_name),1,fp);
fputc('\n',fp);
}
done=findnext(&ffblk);
}
find(pop());
}




void push(char  *a)
{
if(pos>=MAX)
puts("PUSH ERROR");
else
{
*(sta+ ++pos)=(char *)malloc(strlen(a)+1);
strcpy(sta[pos],a);
//printf("PUSH: %s\n",*(sta+pos));
}
}

char * pop(void)
{
if(pos==-1)
return("\0");
else
{
strcpy(temp,*(sta+pos));
free(*(sta+pos--));
//printf("POP:  %s\n",temp);
return(temp);
}
}


0 comments:

Post a Comment