fopen_s和fread读整个二进制文件
时间: 2023-11-05 12:16:21 浏览: 144
读一个二进制文件
我们可以使用 `fopen_s` 函数打开一个二进制文件,并使用 `fread` 函数读取整个文件内容。以下是一个示例代码:
```c
#include <stdio.h>
int main() {
FILE* fp;
errno_t err;
// 打开文件
if ((err = fopen_s(&fp, "file.bin", "rb")) != 0) {
printf("文件打开失败!\n");
return err;
}
// 获取文件大小
fseek(fp, 0, SEEK_END);
long size = ftell(fp);
fseek(fp, 0, SEEK_SET);
// 读取文件内容
char* buffer = (char*)malloc(size);
size_t count = fread(buffer, sizeof(char), size, fp);
if (count != size) {
printf("文件读取失败!\n");
return 1;
}
// 输出文件内容
printf("文件内容:\n");
for (long i = 0; i < size; i++) {
printf("%02X ", buffer[i]);
}
printf("\n");
// 释放内存并关闭文件
free(buffer);
fclose(fp);
return 0;
}
```
在这个示例中,我们使用 `fseek` 函数和 `ftell` 函数获取文件大小,然后使用 `malloc` 函数动态分配内存,以便能够存储整个文件内容。接着使用 `fread` 函数读取整个文件内容,读取的元素个数为文件大小。函数返回值为实际读取的元素个数,如果读取失败,则返回小于文件大小的值。在成功读取文件内容后,我们使用循环遍历并输出文件内容,每个字节用 2 位十六进制表示。最后使用 `free` 函数释放内存并使用 `fclose` 函数关闭文件。
阅读全文