你可以把 fread 的功能看作是“从文件流中读取一组对象到指定的数组中”
它的参数的含义是这样的
fread(一个指针,指向要保存读取内容的数组。是的,你可以把这个看作是存入数组中读取对象的大小,以字节为单位读取对象的个数文件流,函数就从这个流中读)它的返回值表示成功读取了多少个对象,可以通过“检查其是否等于应读个数”来判断是否成功读取。
不过注意:如果文件流中已经没有内容了,fread 也会返回小于应读个数的值或 0。所以返回值不等于应读个数不一定就是读取失败,也许是读到文件末尾了,应该用 feof 或 ferror 做进一步判断。
比如,假设文件流 fp 中存了一组(比如 3 个)int 数据,你就可以这样读取:
intdata[3];//先声明一个能存3个int的数组,后面数据会存到这里size_tcount=fread(data,sizeof(int),3,fp);if(count==3)//通过返回值判断为成功读取了3个int
虽然我把这个解说成读取数组,当然,只读取一个对象也没问题。假设上面例子中只读一个 int:
intdata;//数据会存到这个data里if(fread(&data,sizeof(int),1,fp)==1)//第一个参数传入data的地址即可//根据返回值作判断 |