#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
- 粉丝: 29
- 资源: 12
最新资源
- YOLO图片标注xml转txt代码
- 安卓壳可以用于大屏开机打开网址
- paddlepaddle-gpu-2.5.2-cp38-cp38-win-amd64.whl
- Babel Street Analytics Java 客户端库.zip
- 图像处理中的White Patch算法来实现白平衡,MATLAB实现
- 在android studio 中使用jni来进行编程
- 开机自动启动VMWARE workstation16虚拟机
- Python 爬虫:把廖雪峰的教程转换成 PDF 电子书
- 2024 年 Java 开发人员路线图.zip
- matplotlib-3.7.5-cp38-cp38-win-amd64.whl
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈