æç»ä½ å§~
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <sys/stat.h>
#include <string.h>
char *c="c";
char *cpp="cpp";
char *gcc="gcc ";
char *o="-o ";
char *dot=".";
char *dotdot="..";
void
do_search_dir(char
*path)
{
DIR
*dir;
char
fullpath[1024],currfile[1024];
struct
dirent
*s_dir;
struct
stat
file_stat;
strcpy(fullpath,path);
dir=opendir(fullpath);
while
((s_dir=readdir(dir))!=NULL)
{
if
((strcmp(s_dir->d_name,dot)==0)||(strcmp(s_dir->d_name,dotdot)==0))
continue;
sprintf(currfile,"%s/%s",fullpath,s_dir->d_name);
stat(currfile,&file_stat);
if
(S_ISDIR(file_stat.st_mode))
do_search_dir(currfile);
else
{
char *p;
p=currfile;
while(*p)p++;
while(p>currfile && *p!='.')p--;
if (p!=currfile)p++;
if(strncmp(p,c,1)==0 || strncmp(p,cpp,3)==0)
system(strcat(gcc,strcat(currfile,strcat(o,currfile))));
}
}
closedir(dir);
}
int
main()
{
do_search_dir(dot);
return 0;
}
温馨提示:答案为网友推荐,仅供参考