c - 使用 fread 将文件的一部分读取到缓冲区

标签 c pointers fread

请告诉我哪里出错了。

我有一个文件,需要将最后 n 个字节复制到数组中。

    char *buffer = (char *)malloc(sizeof(char)*n);
    size_t result = fread(buffer,sizeof(char)*n,1,outptr);

结果值为0。

到目前为止,我的代码中的所有内容都工作正常(我已使用 gdb 检查了所有值)。在几行之后我也会释放缓冲区。

n 是用户输入的。输出 ptr 用作

    FILE *outptr = fopen(outfile,"w") 

//输出文件名也是用户输入的,并经过检查以确保它是 bmp 文件。

最佳答案

您正在尝试读取以写入模式打开的文件。

更改:

FILE *outptr = fopen(outfile,"w");

至:

FILE *outptr = fopen(outfile,"r"); /* Use "rb", not "r", if 'outfile' is binary. */

关于c - 使用 fread 将文件的一部分读取到缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8659244/

相关文章:

c - 如何使矮人部分加载到 Sprite 文件中的内存中?

c - 收到 "bus error 10"错误消息?

c++ - 输入之前声明的 char* 会使程序崩溃,而将其输入 'just-declared' char* 则不会。为什么?

c - 如何在C中打印缓冲区的内容?

c++ - ifstream read 和 fread 不返回相同的数据,C++

c - #define 中 #ifdef 的逻辑实现

c++ - 为什么我们需要为指针放置 *

C/GTK+3 多个小部件的绘制事件

c - Strcmp 与 C 中的 Printf 矛盾

c - 读取文件的一部分并将其写入单个无符号字符