2012-04-15 34 views
0

我想从文件的几个部分读取,并将其输出为一个无符号字符。 这就是一个简化版本:读取文件的部分并将其写入单个无符号字符

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
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); 
} 
+0

谢谢!顺便说一下,有一种方法来添加输出一些数据,如:char data [2] = {0xD5,0x48}; – Martin 2012-04-15 21:41:00

+0

当然可以。只需将realloc的大小增加2,并在某处执行'memcpy(* output + some_offset,data,2)'。如果数据在其他两个成员之前插入,则这些数据也必须上移。 – wildplasser 2012-04-16 10:22:57

+0

再次感谢您。它完美的作品。 – Martin 2012-04-17 11:41:43

2

只是增加*output直到前一次读取结束,即*output + 111

相关问题