青年大学习查询器
date文件样式
注意保存(.txt)文件编码方式ANSI(右下角)
new文件样式
直接复制青年大学习的查询页面即可
注意事项
- 如果想命名为别的名称,可以直接修改代码中文件指针与读取检测。
//代码第43、44行
FILE* fp = fopen("new.txt","r"); // new 文件指针
FILE* fg = fopen("date.txt","r");// date 文件指针
//代码第54、55行
File_search(fp, "new.txt"); //检测文件“new.txt”是否存在
File_search(fg, "date.txt");//检测文件“date.txt”是否存在
- (.txt)文件必须保存在(.cpp)文件同一文件夹下。
- 注意文件一定要为(.txt)文件(ANSI编码),否则可能读取不了。
- 低版本打开出现的错误可能为scanf_s函数问题,将其改为scanf即可,gets_s函数随之变动。
- 详细使用教程:青年大学习自动名单核对程序(使用教程)
/*
Visual Studio 2019编译成功
版本号0.0.7-2
作者:吴浩泽
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <Windows.h>
#define MAX_LINE 80//全局常量
int Output(const char* a)//通用输出引擎
{
char d[8] = { "是" };//是字符串
char f[8] = { 0 };
printf(a);
gets_s(f, 3);
if (strcmp(d, f) == 0)
return 1;
else
return 0;
}
void File_search(FILE* n,const char* a)//尝试打开文件,注意文件保存格式为(ANSL)防止出现错漏(下同)
{
if ((n = fopen(a, "r")) == NULL)
{
printf("fail to read & %s", a);
exit(1);
}
}
int main()
{
char buf_1[MAX_LINE][25] = { 0 }; //学习情况名单数组
char buf_11[MAX_LINE][25] = { 0 };//承接无用字符
char buf_2[MAX_LINE][25] = { 0 }; //班级学生名单数组
char buf_22[MAX_LINE][25] = { 0 };//承接组别字符
FILE* fp = fopen("new.txt","r"); // new 文件指针
FILE* fg = fopen("date.txt","r");// date 文件指针
int Class_size = 80; //班级总人数
int Output_1 = 0; //输出设置1返回值
int Output_2 = 0; //输出设置2返回值
int Unfinish = 0; //未完成学生人数
Output_1 = Output("请问是否需要只输出未完成(填写‘是’或‘否’):");//第一个输出设置返回值引入
Output_2 = Output("请问是否需要输出组别(填写‘是’或‘否’):"); //第二个输出设置返回值引入
File_search(fp, "new.txt"); //检测文件“new.txt”是否存在
File_search(fg, "date.txt");//检测文件“date.txt”是否存在
for (int i = 1; fscanf(fp, "%s%s", buf_1[i], buf_11[i]) != EOF; i++); //将学习名单写入数组buf_1
for (int i = 1; fscanf(fg, "%s%s", buf_2[i], buf_22[i]) != EOF; i++); //将班级名单写入数组buf_2
for (int i = 1; i < Class_size; i++)//进行判断
{
int m = 1;//循环变量
while (strcmp(buf_2[i], buf_1[m]) != 0)
{
m++;
if (m == MAX_LINE)
{
printf("[%d]%s\t未完成", i, buf_2[i]);
if (Output_2 == 1)//是否输出组别
printf("\t%s", buf_22[i]);
printf("\n");
Unfinish++;//未完成人数统计
break;
}
}
if (strcmp(buf_2[i], buf_1[m]) == 0)
{
if (Output_1 == 0)
{
printf("[%d]%s\t已完成", i, buf_2[i]);
if (Output_2 == 1)//是否输出组别
printf("\t%s", buf_22[i]);
printf("\n");
}
}
}
printf("\n\t我班共有%d人未完成", Unfinish);//显示未完成人数
Sleep(10000);
return 0;
}