Linux系统C语言程序创建文件夹,linux下的c语言编程删除文件夹

刚刚在学习开始做新项目的时候,学长布置了一项任务,就是在给定一个目录下,要将这个目录下一个星期之前的目录包括里面的文件全部删除,只保留这一个星期内的。百度了好久的资料,终于完成,记录一下防止忘记。(注:文件夹名称默认为日期格式,如20140716)

#include

#include

#include

#include

#include

#include

#include

int date;//已数字的形式存储当天的日期

int change(int data)//将文件夹名称转化为数字后加上7天后的日期

{

int newdata=data;

switch((newdata/100)%100)

{

case 1:

{

if(((newdata%100)+7)<=31) newdata+=7;

else

newdata=(newdata%100+7)%31+100+newdata-(newdata%100);

break;

}

case 2:

{

if(((newdata/10000)%4==0&&(newdata/10000)%100!=0)||

((newdata/10000)%400==0))

{

if(((newdata%100)+7)<=28)  newdata+=7;

else

newdata=(newdata%100+7)%28+100+newdata-(newdata%100);

}

else

{

if(((newdata%100)+7)<=29)   newdata+=7;

else

newdata=(newdata%100+7)%29+100+newdata-(newdata%100);

}

break;

}

case 3:

{

if(((newdata%100)+7)<=31) newdata+=7;

else

newdata=(newdata%100+7)%31+100+newdata-(newdata%100);

break;

}

case 4:

{

if(((newdata%100)+7)<=30) newdata+=7;

else

newdata=(newdata%100+7)%30+100+newdata-(newdata%100);

break;

}

case 5:

{

if(((newdata%100)+7)<=31) newdata+=7;

else

newdata=(newdata%100+7)%31+100+newdata-(newdata%100);

break;

}

case 6:

{

if(((newdata%100)+7)<=30) newdata+=7;

else

newdata=(newdata%100+7)%30+100+newdata-(newdata%100);

break;

}

case 7:

{

if(((newdata%100)+7)<=31) newdata+=7;

else

newdata=(newdata%100+7)%31+100+newdata-(newdata%100);

break;

}

case 8:

{

if(((newdata%100)+7)<=31) newdata+=7;

else

newdata=(newdata%100+7)%31+100+newdata-(newdata%100);

break;

}

case 9:

{

if(((newdata%100)+7)<=30) newdata+=7;

else

newdata=(newdata%100+7)%30+100+newdata-(newdata%100);

break;

}

case 10:

{

if(((newdata%100)+7)<=31) newdata+=7;

else

newdata=(newdata%100+7)%31+100+newdata-(newdata%100);

break;

}

case 11:

{

if(((newdata%100)+7)<=30) newdata+=7;

else

newdata=(newdata%100+7)%30+100+newdata-(newdata%100);

break;

}

case 12:

{

if(((newdata%100)+7)<=31)  newdata+=7;

else

newdata=(newdata%100+7)%31+newdata-(newdata%10000)+10000;

break;

}

default:break;

}

return newdata;

}

void getdate()//获取当天的日期

{

time_t  timep;

struct tm*p_tm;

timep=time(NULL);

p_tm=gmtime(&timep);

date=(p_tm->tm_year+1900)*10000+(p_tm->tm_mon+1)*100+p_tm->tm_mday;

}

void del_dir(char *npath)//删除给定一个文件夹里面所有的文件或者文件夹

{

char *pathname=(char *)malloc(256);

struct dirent* ent=NULL;

DIR *ptr;

DIR *dpin;

ptr=opendir(npath);

while((ent=readdir(ptr))!=NULL)

{

if(strcmp(ent->d_name,".")==0||strcmp(ent->d_name,"..")==0)

continue;

strcpy(pathname,npath);

strcpy(pathname,"\/");//这个地方是一个‘\‘和一个‘/‘;

strcpy(pathname,ent->d_name);

if(ent->d_type==8)

{

remove(pathname);

}

else

{

del_dir(pathname);//由于remove()只能删除空文件夹,所以此处用了递归删除

remove(pathname);

}

}

}

void readirect(char *path)//遍历所有文件夹并找出一个礼拜前的文件夹进行删除

{

char *pathname=(char *)malloc(256);

struct dirent* ent = NULL;

DIR *ptr;

DIR *dpin;

ptr=opendir(path);

while((ent=readdir(ptr)) != NULL)

{

if(strcmp(ent->d_name,".")==0||strcmp(ent->d_name,"..")==0)

continue;

strcpy(pathname,path);

strcat(pathname,"\/");

strcat(pathname,ent->d_name);

if(change(atoi(ent->d_name))

{

del_dir(pathname);

remove(pathname);

}

}

ptr = NULL:

}

int main(int argc,char *argv[])

{

getdate();

readirect(argv[1]);

return 0;

}

原文:http://www.cnblogs.com/fengguowuhen201314/p/3848706.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值