C语言实现通讯录——格式文本在文件中的输入与读出

上周五在实验课上对着电脑崩溃,哈希表早就没问题了可是文件中个人信息的输入与读出怎么都实现不了,两个学长就看着我自暴自弃…
今天看了一哈fprintf与fscanf,果断放弃用fgets与fputs来写——毕竟fprintf和fscanf在格式输入输出上特方便。

功能需求

电脑端录入员工信息插入通讯录文件,同时也要求程序从通讯录文件中读取员工信息以供查询。

实现

插入:

先就将信息都录入Staff变量中,然后利用fprintf()把信息录入文件。

fprintf(fp, "姓名:%s\n", Staff.Name);
fprintf(fp, "电话:%s\n", Staff.TelepNum);
fprintf(fp, "地址:%s\n\n", Staff.Address);

利用格式化输入添加了说明性前缀(如“姓名:”)。

point:最后一句的格式化中有两个‘\n’,是为了隔开两个不同的员工。

读取:

我是在建立哈希表的同时就把通讯录上所有现存信息直接插入哈希表,所以对文件是一次性从头读到尾。

while (fscanf(fp, "\n姓名:%s\n", Staff.Name) == 1)
	{
		fscanf(fp, "电话:%s\n", Staff.TelepNum);
		fscanf(fp, "地址:%s\n", Staff.Address);
		Insert(H, Staff);
	}

利用格式化输入直接将姓名读入Staff中,前缀不录入。

point:要记得把该员工姓名上一行的换行符也给吸收掉,不然while直接退出。
为何要在“姓名”前吸收换行符?因为不知怎得通讯录的第一行就只有一个换行符,算是格式统一吧…

另外

汉字在字符数组里要用两个单元存储,Name[5]遇到三个汉字的姓名就会溢出吼。程序异常结束通讯录文件也不会保存,插入的员工信息会丢失。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值