C语言while (fread(&shangpin, sizeof(struct sp), 1, fp) == 1)

初学请解释一哈这句话,谢谢啦..
还有每次找1一个sizeof(struct sp),系统是怎么把struct中的一个区分出来的呢,还有它查找的顺序又是怎么搞 都

fread()成功的返回值就是参数里读取的数据块个数,你这里就是1;
while(。。。 ==1)的意思就是只要从文件里读取数据块成功,就继续执行读取操作直到文件末尾或读取错误。
sizeof(struct sp)返回值就是sp这个结构体的大小,没明白你问“结构体中的一个是什么意思”struct sp是一个类型,就像 int 或 char 一样的。

在这个地方可以不用sizeof(struct sp), 用sizeif(shangpin) 来替换。即待写入的结构体变量占空间大小。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-01-10
第一个参数是要写的变量的首地址。
第二个参数是要写的变量的大小。
第三个参数是要写的变量的个数
第四个参数是要读的文件的指针
返回值是读取成功的变量的个数。
对一个固定的结构类型来说,它的数据大小是固定的,所以可以根据其大小来区分是否读了一个数据。
如果你不用其他语句改变文件指针的位置的话,fread是从文件开始依次读数据的。
相似回答