首先我们准备一个记事本文件。
我们给它定个模板,第一个是顺序号,第二个是名字,第三个是班级,第四个是学号,学好懒得编了,就草率了一点点,这样看下来我们的结构体也就可以写出来了。
typedef struct Information{
char seriornumber[MAXLENGTH];
char name[MAXLENGTH];
char classname[MAXLENGTH];
char number[MAXLENGTH];
}Information;
接下来的任务就非常的简单了啦,定义一个结构体数组,把记事本的数据存到这个结构体数组里就好了,这就要用到昨天写的那篇博客------C语言的文件读入操作。
我的思路是用fgets()函数读取一行,然后分别存入到四个数组,然后用strcpy()复制到结构体数组,是不是思路很简单,方法很清晰。然后就可以上代码了。
#include <stdio.h>
#include <string.h>
#define MAX 256
#define MAXLENGTH 20
typedef struct Information{
char seriornumber[MAXLENGTH];
char name[MAXLENGTH];
char classname[MAXLENGTH];
char number[MAXLENGTH];
}Information;
int main(void)
{
Information list[MAX] = {0};
printf("请输入您要提取的班级名单:\n");
char banjiname[MAXLENGTH] = {0};
char bfbanjiname[MAXLENGTH] = { 0 };
scanf("%s", banjiname);
strcpy(bfbanjiname,banjiname);
strcat(bfbanjiname, ".txt");
FILE* file = fopen(bfbanjiname, "r");
char buffer[200] = {0};
int num = 0;
while (NULL != fgets(buffer,200,file))
{
char cr_seriornumber[MAXLENGTH] = { 0 };
char cr_name[MAXLENGTH] = { 0 };
char cr_classname[MAXLENGTH] = { 0 };
char cr_number[MAXLENGTH] = { 0 };
int j;
int js = 0;
int count = 0;
for (j = 0; j < strlen(buffer); j++)
{
if (buffer[j] == ' ')
{
js = 0;
count++;
continue;
}
if (count == 0)
{
cr_seriornumber[js] = buffer[j];
js++;
}
else if (count == 1)
{
cr_name[js] = buffer[j];
js++;
}
else if (count == 2)
{
cr_classname[js] = buffer[j];
js++;
}
else
{
cr_number[js] = buffer[j];
js++;
}
}
strcpy(list[num].seriornumber, cr_seriornumber);
strcpy(list[num].name, cr_name);
strcpy(list[num].classname, cr_classname);
strcpy(list[num].number, cr_number);
num++;
}
printf("%s的名单为:\n:", banjiname);
int i;
for (i = 0; i <= num; i++)
{
printf("%s %s %s %s", list[i].seriornumber, list[i].name, list[i].classname, list[i].number);
}
while (1)
{
}
fclose(file);
return 0;
}
因为我的txt文件名是计软2021.txt。所以文件名输入计软2021就好了。
就存入到了结构体,emmm,就完成了,然后就可以写一个学生管理系统了,从文件读入学生信息,然后进行增删改查。然后开始写从键盘输入,保存到文件。
先上代码
#include <stdio.h>
#include <string.h>
#define MAX 256
#define MAXLENGTH 20
typedef struct Information{
char seriornumber[MAXLENGTH];
char name[MAXLENGTH];
char classname[MAXLENGTH];
char number[MAXLENGTH];
}Information;
int main(void)
{
printf("请您输入班级名:\n");
char banjiname[20] = { 0 };
scanf("%s", banjiname);
strcat(banjiname, ".txt");
FILE* file = fopen(banjiname,"w");
Information list[MAX] = {0};
printf("请输入您要输入学生信息的个数:\n");
int num = 0;
scanf("%d", &num);
int i;
for (int i = 0; i < num; i++)
{
scanf("%s %s %s %s", list[i].seriornumber, list[i].name, list[i].classname, list[i].number);
char buffer[200] = {0};
int len = 0;
strcat(buffer, list[i].seriornumber);
len = strlen(buffer);
buffer[len] = ' ';
strcat(buffer, list[i].name);
len = strlen(buffer);
buffer[len] = ' ';
strcat(buffer, list[i].classname);
len = strlen(buffer);
buffer[len] = ' ';
strcat(buffer, list[i].number);
len = strlen(buffer);
buffer[len] = '\n';
fputs(buffer,file);
}
fclose(file);
return 0;
}
思路大概是先创建结构体,然后从键盘输入存入结构体,然后把结构体数据复制到字符串,然后用fputs()函数一行一行读入。就这么简单。
运行前:
运行时:
运行后:
多个一个计软2022.txt文件夹。很简单就完成了。大家可以写一个不用数据结构的,用数组的简易的管理系统了。