int cpdir(char * fromdir, char * todir)
{
char fBuf[256];
char tBuf[256];
FILE *fromfile = NULL;
FILE *tofile = NULL;
DIR * dir = NULL;
struct dirent *ptr;
int ret = 0;
dir = opendir(fromdir);
if(NULL == dir)
{
return -1;
}
mkdir(todir, 0755);
while((ptr = readdir(dir)) != NULL)
{
ret = strcmp(ptr->d_name, ".");
if(0 == ret)
{
continue;
}
ret = strcmp(ptr->d_name, "..");
if(0 == ret)
{
continue;
}
snprintf(fBuf, 256, "%s/%s", fromdir, ptr->d_name);
snprintf(tBuf, 256, "%s/%s", todir, ptr->d_name);
ret = is_dir(fBuf);
if(0 == ret)
{
ret = cpdir(fBuf, tBuf);
if(0 != ret)
{
return -1;
}
}
else if(1 == ret)
{
fromfile = fopen(fBuf, "r+b");
if(NULL == fromfile)
{
return -1;
}
tofile = fopen(tBuf, "w+b");
if(NULL == tofile)
{
return -1;
}
cpfile(fromfile, tofile);
fclose(fromfile);
fclose(tofile);
}
}
}
文件夹拷贝(linux c 递归)
最新推荐文章于 2023-04-30 11:46:30 发布