##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考虑的更多吧)。
PATJ1022
最新推荐文章于 2024-07-18 00:38:53 发布