fread函数
时间: 2023-10-18 11:14:12 浏览: 49
fread函数是C语言中用于读取二进制文件的函数。它的原型为:
```c
size_t fread(void *ptr, size_t size, size_t count, FILE *stream);
```
它的作用是从文件流`stream`中读取`count`个数据块,每个数据块大小为`size`字节,将它们存储到以`ptr`为起始位置的内存块中,并返回实际读取的数据块数目。`ptr`必须是一个合法的内存地址,用于存储读取到的数据。
使用fread函数时需要注意的是,它不会自动添加字符串结束符'\0',也不会对字符串进行处理,因此如果要读取字符串,需要手动添加'\0'。另外,如果读取的数据块数目少于`count`,则可能是到达了文件末尾或者读取出错,因此需要使用`feof`和`ferror`函数来判断。
例如,下面的代码演示了如何使用fread函数读取一个二进制文件:
```c
#include <stdio.h>
int main() {
FILE *fp = fopen("data.bin", "rb");
if (fp == NULL) {
printf("Failed to open file!\n");
return -1;
}
char buf[32];
size_t n = fread(buf, 1, 32, fp);
if (n != 32) {
if (feof(fp)) {
printf("Reached end of file!\n");
} else if (ferror(fp)) {
printf("Error reading file!\n");
}
} else {
printf("Read %d bytes from file:\n", n);
for (int i = 0; i < n; ++i) {
printf("%02x ", buf[i]);
}
printf("\n");
}
fclose(fp);
return 0;
}
```