吃饱没事做之——关于在文件夹中通过文件名和名单进行匹配筛查出未完成的小脚本

写了一个来查找文件夹里面的图片名(都是.jpg),然后和指定的名单进行匹配的一个小脚本。
来检验一下有谁没交。

先去查查如何获取文件的名字,然后直接复制修改

https://blog.csdn.net/cxf7394373/article/details/7195661 (在这里找到的)

可以通过输入

.\main.exe 文件夹的路径 匹配的名单的路径(我使用的是1.txt)

.\main.exe C:\1 C:\1.txt

可以快速筛查还有谁没有交图片。

以上

#include <iostream>
#include <io.h>
#include<stdio.h>
#include<stdlib.h>
#include <string>
#include <vector>
using namespace std;
#define LEN 10

void getFiles(string, vector<string>&);
FILE * open(const char *path,const char *s);
int read(FILE *fp,vector<string>& student_name);
int find(vector<string>& v, string s);

string filename = "";

int main(int argsl, char** args) {

    FILE *fp = NULL ;
    vector<string> files;
	vector<string> student_name;
    string dir_name = args[1];
	int count;
	if(argsl != 3)
	{
		cout << "格式不对" <<endl;	
		return 0;
	}
    fp = open(args[2],"r");
    getFiles(dir_name , files );

    read(fp,student_name);

	cout << "还没交的:" <<endl;
	count = 0;
	for(int j=0; j< student_name.size(); ++j)
    {
        if(find(files,student_name[j]) ==  files.size())
		{
			cout << student_name[j] << endl;
			count++;
		}
    }
	cout << "还有" << count << "人没交" <<	endl;
	
	cout << "名字可能打错的:" <<endl;
	count = 0;
	for(int j=0; j< files.size(); ++j)
    {
        cout << files[j] << endl;
		count++;
    }
	cout << "有" << count << "人名字可能打错" <<	endl;
	getchar();
    return 0;
}

int find(vector<string>& v, string s)
{
	int j;
	for(j=0; j< v.size(); ++j)
    {
        if(v[j].compare(s) == 0)
		{
			v.erase(v.begin()+j);
			return -1;
		}
    }
	return j;
}

void getFiles( string path, vector<string>& files )
{
	//文件句柄
	long   hFile   =   0;
	//文件信息
	struct _finddata_t fileinfo;
	string p;
	if((hFile = _findfirst(p.assign(path).append("\\*").c_str(),&fileinfo)) !=  -1)
	{
		do
		{
			//如果是目录,迭代之
			//如果不是,加入列表
			if((fileinfo.attrib &  _A_SUBDIR))
			{
				/*if(strcmp(fileinfo.name,".") != 0  &&  strcmp(fileinfo.name,"..") != 0)
					getFiles( p.assign(path).append("\\").append(fileinfo.name), files );*/
			}
			else
			{
                filename = fileinfo.name;
                filename = filename.substr(0,filename.length() - 4);
				files.push_back(filename);
			}
		}while(_findnext(hFile, &fileinfo)  == 0);
		_findclose(hFile);
	}
}

int read(FILE *fp,vector<string>& student_name)
{
	char s[10];
	int j = 1;
	string c;
	fscanf(fp,"%s",s);
	student_name.push_back(s);
	do
	{
		fscanf(fp,"%s",s);
		c = s;
		if(c.compare(student_name[j-1]) == 0)return 0;
		student_name.push_back(s);
		j++;
	}while(1);
	return j;
	
}
FILE * open(const char *path,const char *s)
{
	return fopen(path,s);	
}

名单用记事本存储,记得编码要是ASCII
在这里插入图片描述
然后文件夹的图片是这样的
在这里插入图片描述
效果图:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值