对 fread 的 return 值感到困惑
Confused about the return value from fread
我正在尝试使用 fread 读取文件。我基于此处的文档:http://www.cplusplus.com/reference/cstdio/fread/
我想一次从文件中读取 4 个切片。
这是我的:
int vol_buffer_size = SLICE_SIZE * 4; //SLICE_SIZE = 759000 bytes
unsigned short vol_buffer[vol_buffer_size];
for (int j = 0; j < num_slps; j++){
nByteRead = fread(&vol_buffer, SLICE_SIZE, 4, volFile);
}
当我这样做时,nByteRead 在第一次读取时显示为 4 个字节。当我这样做时:
nByteRead = fread(&vol_buffer, 4, SLICE_SIZE, volFile);
nByteRead 结果为 759000 字节,或一个切片。但我希望它读取 759000 * 4 个字节,相当于 4 个切片。我在这里做错了什么?我很困惑,因为文档说第二个参数是我认为的大小 SLICE_SIZE 而第三个参数是我认为在这种情况下是 4 的计数。
fread
函数定义as follows:
size_t fread (void * ptr, size_t size, size_t count, FILE * stream);
其中 size
参数指定要读取的每个元素的大小(以字节为单位),count
指定要读取的此类元素的(最大)数量。 return 值是 成功读取的元素数 。
所以,在你的第一种情况下:
nByteRead = fread(&vol_buffer, SLICE_SIZE, 4, volFile);
元素的大小为 759000
,您要求读取(最多)4
个此类对象。调用成功,函数returns 4
。
在你的第二种情况下:
nByteRead = fread(&vol_buffer, 4, SLICE_SIZE, volFile);
您要求读取 759000
个元素,每个元素的大小为 4
个字节。同样,调用成功并且 returns 读取了多少元素。
在这两种情况下,读取的字节数是相同的(4 x 759000
)——但这不是什么return 由 fread
函数编辑。
我正在尝试使用 fread 读取文件。我基于此处的文档:http://www.cplusplus.com/reference/cstdio/fread/
我想一次从文件中读取 4 个切片。
这是我的:
int vol_buffer_size = SLICE_SIZE * 4; //SLICE_SIZE = 759000 bytes
unsigned short vol_buffer[vol_buffer_size];
for (int j = 0; j < num_slps; j++){
nByteRead = fread(&vol_buffer, SLICE_SIZE, 4, volFile);
}
当我这样做时,nByteRead 在第一次读取时显示为 4 个字节。当我这样做时:
nByteRead = fread(&vol_buffer, 4, SLICE_SIZE, volFile);
nByteRead 结果为 759000 字节,或一个切片。但我希望它读取 759000 * 4 个字节,相当于 4 个切片。我在这里做错了什么?我很困惑,因为文档说第二个参数是我认为的大小 SLICE_SIZE 而第三个参数是我认为在这种情况下是 4 的计数。
fread
函数定义as follows:
size_t fread (void * ptr, size_t size, size_t count, FILE * stream);
其中 size
参数指定要读取的每个元素的大小(以字节为单位),count
指定要读取的此类元素的(最大)数量。 return 值是 成功读取的元素数 。
所以,在你的第一种情况下:
nByteRead = fread(&vol_buffer, SLICE_SIZE, 4, volFile);
元素的大小为 759000
,您要求读取(最多)4
个此类对象。调用成功,函数returns 4
。
在你的第二种情况下:
nByteRead = fread(&vol_buffer, 4, SLICE_SIZE, volFile);
您要求读取 759000
个元素,每个元素的大小为 4
个字节。同样,调用成功并且 returns 读取了多少元素。
在这两种情况下,读取的字节数是相同的(4 x 759000
)——但这不是什么return 由 fread
函数编辑。