求一个在Linux下运行的简单GCC控制台C程序

就是实现在一个目录下找到所有.c和.cpp文件(包括子目录),将每一个找到的源文件用GCC命令行编译为相应的(文件名相同的).bin程序,放在源文件所在的目录下,同时删除编译产生的中间文件(这一条也可以不用做,做到更好,优先加分)。
最后,请在Linux下测试以后再贴出你的C代码。

我给你吧~
#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;
}
温馨提示:答案为网友推荐,仅供参考
相似回答