基于C语言开发通讯录-(复习C语言知识点)(下)

文章详细描述了如何使用C语言开发通讯录应用,包括文件的读取和写入功能,通过`fopen`、`fgets`、`sscanf`等函数操作文件,以及在`contact.c`中的`InitContact`和`SaveContact`函数实现。
摘要由CSDN通过智能技术生成

基于C语言开发通讯录(复习C语言知识点)(中)_zhangwenchao911的博客-CSDN博客

紧接C语言开发通讯录(中),实现 文件读写功能。

一、通讯录新增功能 


1.1 文件-读功能


        a)通过fopen(“文件名”,"r")进行文件-读方式打开;

        b)  通过fgets(buff,pf)将每行数据读取到buff

        c) 通过sscanf(buff,"%s %d %s %s %s",PeoInfo成员) 将buff中的数据格式化输入到结构体成员中。

        d)close(fp),关闭文件

1.2文件-写功能

        a)通过fopen(“文件名”,"w")进行文件-写方式打开;

        b) 通过sprinft(buff,"%s %d %s %s %s",PeoInfo成员) 将结构体成员数据格式化输出到buff中。

        c)  通过fputs(buff,pf)将buff数据存入到文件里。

        d)close(fp),关闭文件

二、代码实现

2.1函数代码


        实现文件读写功能的添加,完成contact.c中InitContact的修改与SaveContact函数的添加。

//void InitContact(Contact* pc)
//{
//	assert(pc != NULL);
//	//PeoInfo* tmp = (PeoInfo*)calloc(pc->Capacity,sizeof(PeoInfo));
//	PeoInfo* tmp = (PeoInfo*)malloc(sizeof(PeoInfo) * INIT_CAPACITY);
//	if (tmp == NULL)
//	{
//		perror("InitContact::malloc");
//	}
//	else
//	{
//		pc->Capacity = INIT_CAPACITY;
//		pc->data = tmp;
//		pc->sz = 0;
//		printf("初始化成功\n");
//	}
//}
//V1.2 从文件中读取通讯录信息进行初始化
void InitContact(Contact* pc)
{
	assert(pc != NULL);
	//PeoInfo* tmp = (PeoInfo*)calloc(pc->Capacity,sizeof(PeoInfo));

	PeoInfo* tmp = (PeoInfo*)malloc(sizeof(PeoInfo) * INIT_CAPACITY);
	if (tmp == NULL)
	{
		perror("InitContact::malloc");
	}
	else
	{
		pc->Capacity = INIT_CAPACITY;
		pc->data = tmp;
		pc->sz = 0;
		printf("初始化成功\n");

	}
	FILE* pf = fopen("contact.txt", "r");
	if (pf!=NULL)
	{
		char buff[256] = "";
		int i = 0;
		while (fgets(buff,255,pf)!=NULL)
		{
			CheckCapacity(pc);
			sscanf(buff, "%s %d %s %s %s\n", pc->data[i].name,&(pc->data[i].age), pc->data[i].sex, pc->data[i].tele, pc->data[i].addr);
			pc->sz++;
			i++;
		}
		fclose(pf);
	}
	else
	{
		perror("读取配置失败\nInitContact::open");

	}
	
}

void SaveContact(Contact* pc)
{
	FILE* pf = fopen("contact.txt","w");
	if (pf == NULL)
	{
		perror("SaveContact::open");
	}
	else
	{
		char buff[255] = "";
		int i = 0;
		for (i = 0; i < pc->sz; i++)
		{
			sprintf(buff, "%s %d %s %s %s\n", pc->data[i].name, pc->data[i].age, pc->data[i].sex, pc->data[i].tele, pc->data[i].addr);
			fputs(buff, pf);
		}
		fclose(pf);
	}

}

 2.2总结

 实现了文件的读写功能,基于C语言的通讯录功能已全部实现。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值