题目:
用递归删除目录,同时删除多个目录文件
#include <stdio.h> #include <sys/types.h> #include <dirent.h> #include <unistd.h> #include <string.h> #include <stdlib.h> //可删除一个或多个目录文件 void my_rm(char *argv) { //1.打开要删除的目录 DIR *dp = opendir(argv); //2.读取该目录 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(1024); //用snprintf去拼接字符串 snprintf(pathname,1024,"%s/%s",argv,tp->d_name); printf("%s\n",pathname); printf("%s\n",pathname); unlink(pathname);//删除的文件路径名,dir-2.txt } if(tp->d_type == DT_DIR) { char *pathname = malloc(1024); //用snprintf去拼接字符串 snprintf(pathname,1024,"%s/%s",argv,tp->d_name); printf("%s\n",pathname); my_rm(pathname); rmdir(pathname); if(rmdir(pathname)!=0);//要删除的文件路径名 { perror("出错啦"); } } // rmdir(argv); } rmdir(argv); } int main(int argc,char **argv) { if(argc<2) { printf("输入错误,请输入两个或者多个数据\n"); return -1; } //删除目录里的所有的目录项(文件和目录) for(int i =1;i<argc;i++) { my_rm(argv[i]); } return 0; }