1.用递归删除目录(多个目录可以从参数传进来)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <dirent.h>
#include <unistd.h>
struct dirent * myreddir(char * name){
//打开目录
DIR * dp = opendir(name);
//读目录
struct dirent *tp= readdir(dp);
while(1){
struct dirent *tp= readdir(dp);
if(tp == NULL ){
break;
}
//绕过. 和 ..两个目录项
if(strcmp(tp->d_name,".")== 0 || strcmp(tp->d_name,"..")== 0 )
{
continue;
}
if(tp->d_type==DT_REG){
char * pathname=malloc(510);
snprintf(pathname ,510,"%s/%s",name,tp->d_name);
unlink(pathname);
printf("%s\n",pathname);
}
if(tp->d_type==DT_DIR){
char * pathname=malloc(510);
snprintf(pathname ,510,"%s/%s",name,tp->d_name);
myreddir(pathname);
printf("%s\n",pathname);
rmdir(pathname);
}
rmdir(name);
}
return tp;
}
/***************主函数***********************/
int main(int argc, char **argv) {
if(argc<2){
printf("至少添加一个地址\n");
return -1;
}
for(int i=1;i<argc;i++){
myreddir(argv[i]);
}
return 0;
}