读取文件的一部分并将其写入单个unsigned char

时间:2012-04-15 16:56:56

标签: c file pointers fread

我想从文件的几个部分读取,而不是将其作为一个unsigned char输出。 这是这个的简化版本:

void loadPartsOfFile (const char *filename, unsigned char **output)
{
    *output = malloc(333);

    FILE *file = fopen(filename, "rb");
    fseek(file, 0, SEEK_SET); 
    fread(*output, 1, 111, file);
    fseek(file, 10254, SEEK_SET);
    fread(*output, 1, 222, file);

    fclose(file);
}

第二个fread只是覆盖了第一个添加到输出的内容。有没有办法将第二个数据流附加到输出?

2 个答案:

答案 0 :(得分:2)

void loadPartsOfFile (const char *filename, unsigned char **output)
{
    *output = realloc(*output, 333);

    FILE *file = fopen(filename, "rb");
    fseek(file, 0, SEEK_SET); 
    fread(*output, 1, 111, file);
    fseek(file, 10254, SEEK_SET);
    fread(*output+111, 1, 222, file);

    fclose(file);
}

答案 1 :(得分:2)

只需递增*output直到上一次读取结束,i。即*output + 111