网络编程第三次作业(2024.8.12)

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
#include <dirent.h> 
#include "./myheadfile.h"


void removedir(char*);
void stringcat(char*,char*,char*);
char* stringcat2(char*,char*);

int main(int argc, char *argv[])
{
	if(argc<2){
		printf("有问题!参数少了!\n");
		return 0;
	}
	if(argc==2){
		removedir(argv[1]);
		return 0;
	}
	if(argc>2&&strcmp(argv[1],"-r")==0){
		for(int i=2;i<argc;i++)
			removedir(argv[i]);
	}else{
		printf("输入第一个参数有误!要删除多个目录请用-r,谢谢\n");
	}
	return 0;
}

void removedir(char* str){
	printf("%s\n",str);
	DIR* dir=opendir(str);
	if(NULL==dir){
		printf("%s\n",strerror(errno));
		return;
	}
	struct dirent* p = readdir(dir);
	while(NULL!=p){
		if(0==strcmp(p->d_name,".")||0==strcmp(p->d_name,"..")){
			p = readdir(dir);
			continue;
		}
		if(p->d_type==DT_DIR){
			char* path = malloc(300);
			memset(path,0,300);
			stringcat(path,str,p->d_name);
			removedir(path);
			printf("file=%s\n",path);
			rmdir(path);
		}else{
			printf("file2=%s\n",stringcat2(str,p->d_name));
			unlink(stringcat2(str,p->d_name));
		}
		p = readdir(dir);
	}
	closedir(dir);
	rmdir(str);
}
	
void stringcat(char* path,char* str1,char* str2){
	int i=0,j=0;
	for(;str1[i]!='\0';i++)
		path[i]=str1[i];
	path[i]='/';
	for(;str2[j]!='\0';j++)
		path[i+j+1]=str2[j];
	path[i+j+1]='\0';
}

char* stringcat2(char* str1,char* str2){
	static char s[300]={0};
	int i=0,j=0;
	for(;str1[i]!='\0';i++)
		s[i]=str1[i];
	s[i]='/';
	for(;str2[j]!='\0';j++)
		s[i+j+1]=str2[j];
	s[i+j+1]='\0';
	return s;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值