#include <stdio.h>
#include <sys/stat.h>
#include <dirent.h>
int is_dir(char * filename)
{
struct stat buf;
int ret = stat(filename,&buf);
if(0 == ret)
{
if(buf.st_mode & S_IFDIR)
{
//printf("%s is folder\n",filename);
return 0;
}
else
{
//printf("%s is file\n",filename);
return 1;
}
}
return -1;
}
int delete_dir(char * dirname)
{
char chBuf[256];
DIR * dir = NULL;
struct dirent *ptr;
int ret = 0;
dir = opendir(dirname);
if(NULL == dir)
{
return -1;
}
while((ptr = readdir(dir)) != NULL)
{
ret = strcmp(ptr->d_name, ".");
if(0 == ret)
{
continue;
}
ret = strcmp(ptr->d_name, "..");
if(0 == ret)
{
continue;
}
snprintf(chBuf, 256, "%s/%s", dirname, ptr->d_name);
ret = is_dir(chBuf);
if(0 == ret)
{
//printf("%s is dir\n", chBuf);
ret = delete_dir(chBuf);
if(0 != ret)
{
return -1;
}
}
else if(1 == ret)
{
//printf("%s is file\n", chBuf);
ret = remove(chBuf);
if(0 != ret)
{
return -1;
}
}
}
(void)closedir(dir);
ret = remove(dirname);
if(0 != ret)
{
return -1;
}
return 0;
}
删除非空文件夹(linux c 递归)
最新推荐文章于 2024-09-07 18:30:18 发布
本文介绍如何使用C语言删除目录及其内部的所有文件和子目录,包括递归删除过程和核心函数应用。
&spm=1001.2101.3001.5002&articleId=7822923&d=1&t=3&u=20249675cc6e4bf7900c0cd88aa057da)
763

被折叠的 条评论
为什么被折叠?



