PATJ1022

##PATJ1022
题目大意:有一个数字图书系统,记录输入图书的信息(ID,名字,作者(唯一),关键字,出版社,年份)给m个请求要求我们找出符合条件书的ID
题目不难,我来说说自己遇到的麻烦。
1:输出的ID必须为7位,不足要在前补0
2:feges的麻烦,由于我使用的是C,getline用起来有点麻烦,所以我索性用了fgets
fgets(char ,size_t size,FILE stream*);
特性:fgets按行读取数据(其实就是它对scanf做了一些处理,不以空格和换行为分隔符)
而且它是get s也就是获得字符串,所以每次fgets它都会强行在读取的字符串后面加上’\0’这就很麻烦了,如果我们要读的字符串有80个字节,但我们的数组也只有80个字节的空间,那么最后一个字节对应的字符就会被它默认用’\0’代替,也就是我们无法完整获得。
所以我一般用的时候会扩大一位,并每次把读入的\n换成\0而且我是用strlen换的
这就会出现问题了,比如这本书正好80字节,读入81的数组应该是正好的。(原本第81位的\n被它默认替换为\0了)但按照我的设定我还会将最后一位替换为\0这个时候无辜的名字的最后一位被我换成了\0(哭泣)所以我后来扩到了82位。。。用getline的小伙伴就不用考虑这个了。。。。最后晒一下我丑陋的代码(自己手写比较函数速度会更快,可能strcmp考虑的更多吧)。
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值