从文件读入数据存储到结构体和从键盘读入存入到文件------C语言

首先我们准备一个记事本文件。

 我们给它定个模板,第一个是顺序号,第二个是名字,第三个是班级,第四个是学号,学好懒得编了,就草率了一点点,这样看下来我们的结构体也就可以写出来了。

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文件夹。很简单就完成了。大家可以写一个不用数据结构的,用数组的简易的管理系统了。

  • 10
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值