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