C语言学生管理系统中有点疑问
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言学生管理系统中有点疑问相关的知识,希望对你有一定的参考价值。
if (fread(&num,sizeof(int),1,fp)!=1)
num=-1;
num是记录人数的,为什么要num=-1;
之前的if判断中用到了fread函数。
函数原型:
size_t fread ( void *buffer, size_t size, size_tcount, FILE *stream)
参数:
1. buffer
用于接收数据的内存地址
2. size
要读写的字节数,单位是字节
3. count
要进行读写多少个size字节的数据项,每个元素是size字节.
4. stream
输入流
Fread函数用途为从一个文件流中读数据,最多读取count个元素,每个元素size字节,如果调用成功返回实际读取到的元素个数,如果不成功或读到文件末尾返回 0。
然后再来看你的if判断中的内容:
fread(&num,sizeof(int),1,fp)!=1
你这里显然count值设置成了1,意思是你想在文件里读出1个元素,如果成功的话fread函数返回值为1。”!=”意为不等于,如果最后返回值不是1,那么证明你读取文件的操作失败。然后就是我之前说的把num设置一个反常规值,之后进行打印错误和强行退出的操作。你看看我说的对不对。 参考技术A fread(&num,sizeof(int),1,fp)这个函数的原型是
size_t fread ( void *buffer, size_t size, size_t count, FILE *stream) ;
这个函数的返回值是实际读取的元素个数。如果返回值与count不相同,则可能文件结尾或发生错误。
所以fread(&num,sizeof(int),1,fp)!=1即返回值不等于1(也就是count值),那么说明出错,所以将num置为-1,主要是为了防止在之后的运行过程num读到的是一个错误值(这个值可能是随机的),造成之后的运行错误而无法判断到底是哪里出错了。本回答被提问者和网友采纳
以上是关于C语言学生管理系统中有点疑问的主要内容,如果未能解决你的问题,请参考以下文章