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

时间:2011-12-28 17:36:16

标签: 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文件。

2 个答案:

答案 0 :(得分:1)

size_t result = fread(buffer, n, 1, outptr);应该没问题。

OTOH,你正在处理的文件是空的吗?

请确保fopen()成功,并检查malloc()是否成功!

在完全不同的注释中,sizeof()fread()会返回size_t,并且应该投放到int

答案 1 :(得分:1)

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

变化:

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

为:

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