#include "heads.h"
//判断目录中文件类型,如果是普通文件判断是不是.txt文件
//如果是目录文件,把找到的txt文件就拷贝到此目录中
char txtpathname[10][40];//存储文件地址的数组
char txtname[10][10];//存储文件名的数组
char dirpathname[300];
//拼接txt文件的地址,并且返回txt文件个数
int txtfilename(const char *dirname)
{
DIR *my_dirpt = opendir(dirname);
if (my_dirpt == NULL)
{
perror("打开目录失败");
exit(0);
}
struct dirent *my_ept = NULL;
int txtnub = 0;
while(1)
{
//循环读取目录项
my_ept = readdir(my_dirpt);
if (my_ept == NULL)
break;
if (my_ept->d_type == DT_REG) //普通文件
{
if ( (strstr(my_ept->d_name,".txt")) != NULL )
{
printf("这个%s是文本文件\n", my_ept->d_name);
sprintf(txtname[txtnub],"%s",my_ept->d_name); //复制txt文件名
sprintf(txtpathname[txtnub],"%s%s/%s","./",dirname,my_ept->d_name);//拼接路径名
txtnub++;
if (txtnub >10)
{
printf("txt文件名内存满了\n");
break;
}
}
}
else continue;
}
closedir(my_dirpt);
return txtnub;
}
//判断是否为目录并且复制txt文件
void cptxtindir(const char *dirname,int txtnub)
{
DIR *my_dirpt = opendir(dirname);
struct dirent *my_ept = NULL;
if (my_dirpt == NULL)
{
perror("打开目录失败");
exit(0);
}
while(1)
{
my_ept = readdir(my_dirpt);
if(my_ept == NULL)
break;
char buf1[100] = {0};//假设txt字节小于100时
if ( my_ept->d_type == DT_DIR && my_ept->d_name[0] != '.')
{
for (int i = 0; i < txtnub; ++i)
{
bzero(dirpathname,300);
sprintf(dirpathname,"./%s/%s/%s",dirname,my_ept->d_name,txtname[i]);
int fd1 = open(txtpathname[i],O_RDONLY);
int fd2 = open(dirpathname,O_CREAT|O_TRUNC|O_RDWR,0777);
bzero(buf1,100);
int ret1 = read(fd1,buf1,100);
write(fd2,buf1,ret1);
close(fd1);
close(fd2);
}
}
}
printf("复制完成!!\n");
}
int main(int argc, char const *argv[])
{
//判断main传参的个数和是否是目录
if(argc != 2)
{
printf("参数错误!用法:<目录>\n");
return -1;
}
struct stat filinfo;
bzero(&filinfo, sizeof(filinfo));//清空
stat(argv[1], &filinfo);
if(!S_ISDIR(filinfo.st_mode))
{
printf("参数必须是一个目录!再见!\n");
return -1;
}
//判断并保存.txt的文件名的函数
int txtnub = txtfilename(argv[1]);
//判断目录并且复制
cptxtindir(argv[1],txtnub);
return 0;
}
MECHT
- 粉丝: 30
- 资源: 12
最新资源
- 毕设和企业适用springboot社交应用平台类及金融数据分析平台源码+论文+视频.zip
- 毕设和企业适用springboot社交应用平台类及交通信息平台源码+论文+视频.zip
- 毕设和企业适用springboot人力资源管理类及用户数据分析平台源码+论文+视频.zip
- 毕设和企业适用springboot人力资源管理类及用户体验优化平台源码+论文+视频.zip
- 毕设和企业适用springboot人力资源管理类及用户行为分析平台源码+论文+视频.zip
- 毕设和企业适用springboot人力资源管理类及运动管理平台源码+论文+视频.zip
- 毕设和企业适用springboot人力资源管理类及智能化系统源码+论文+视频.zip
- 毕设和企业适用springboot社交互动平台类及社交媒体平台源码+论文+视频.zip
- 毕设和企业适用springboot社交互动平台类及人工智能客服平台源码+论文+视频.zip
- 毕设和企业适用springboot社交互动平台类及社交游戏平台源码+论文+视频.zip
- 毕设和企业适用springboot社交应用平台类及跨平台销售系统源码+论文+视频.zip
- 毕设和企业适用springboot社交应用平台类及民生服务平台源码+论文+视频.zip
- 毕设和企业适用springboot社交互动平台类及生活服务平台源码+论文+视频.zip
- 毕设和企业适用springboot社交互动平台类及食品配送管理平台源码+论文+视频.zip
- 毕设和企业适用springboot社交互动平台类及社区服务平台源码+论文+视频.zip
- 毕设和企业适用springboot社交应用平台类及无人驾驶系统源码+论文+视频.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈