写了一个来查找文件夹里面的图片名(都是.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
然后文件夹的图片是这样的
效果图: