用递归的方式删除目录
#include "myhead.h"
void rm_dir( const char*argv)
{
DIR*dp=opendir(argv);
while(1)
{
struct dirent * tp=readdir(dp);
if (tp==NULL)
{
break;
}
if(strcmp(tp->d_name,".")==0||strcmp(tp->d_name,"..")==0)//比较字符串用strcmp函数
{
continue;
}
if(tp->d_type==DT_REG)//删除普通文件
{
char* pathname=malloc(500);
snprintf(pathname,500,"%s/%s",argv,tp->d_name);//%s/%s需要手动添加一个/
printf("%s\n",pathname);
unlink(pathname);//unlink删除普通文件
}
if(tp->d_type==DT_DIR)
{
char* pathname=malloc(500);
snprintf(pathname,500,"%s/%s",argv,tp->d_name);
printf("%s\n",pathname);
rm_dir(pathname);
rmdir(pathname);//rmdir删除目录
}
}
rmdir(argv);//递归完成后还剩一个空的文件目录,需要再次使用rmdir直接删除
}
int main(int argc, const char **argv)
{
for(int i=1;i<argc;i++)
{
rm_dir(argv[i]);
}
return 0;
}