#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
#include <dirent.h>
#include "./myheadfile.h"
void removedir(char*);
void stringcat(char*,char*,char*);
char* stringcat2(char*,char*);
int main(int argc, char *argv[])
{
if(argc<2){
printf("有问题!参数少了!\n");
return 0;
}
if(argc==2){
removedir(argv[1]);
return 0;
}
if(argc>2&&strcmp(argv[1],"-r")==0){
for(int i=2;i<argc;i++)
removedir(argv[i]);
}else{
printf("输入第一个参数有误!要删除多个目录请用-r,谢谢\n");
}
return 0;
}
void removedir(char* str){
printf("%s\n",str);
DIR* dir=opendir(str);
if(NULL==dir){
printf("%s\n",strerror(errno));
return;
}
struct dirent* p = readdir(dir);
while(NULL!=p){
if(0==strcmp(p->d_name,".")||0==strcmp(p->d_name,"..")){
p = readdir(dir);
continue;
}
if(p->d_type==DT_DIR){
char* path = malloc(300);
memset(path,0,300);
stringcat(path,str,p->d_name);
removedir(path);
printf("file=%s\n",path);
rmdir(path);
}else{
printf("file2=%s\n",stringcat2(str,p->d_name));
unlink(stringcat2(str,p->d_name));
}
p = readdir(dir);
}
closedir(dir);
rmdir(str);
}
void stringcat(char* path,char* str1,char* str2){
int i=0,j=0;
for(;str1[i]!='\0';i++)
path[i]=str1[i];
path[i]='/';
for(;str2[j]!='\0';j++)
path[i+j+1]=str2[j];
path[i+j+1]='\0';
}
char* stringcat2(char* str1,char* str2){
static char s[300]={0};
int i=0,j=0;
for(;str1[i]!='\0';i++)
s[i]=str1[i];
s[i]='/';
for(;str2[j]!='\0';j++)
s[i+j+1]=str2[j];
s[i+j+1]='\0';
return s;
}