2012-04-15 27 views
0

ファイルのいくつかの部分から読み込み、それをunsigned charとして出力したい。 これは、これの簡易版である:ファイルの一部を読み込んで単一の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番目のデータストリームを出力に追加する方法はありますか?

答えて

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

+0

はい、もちろんです。 reallocのサイズを2だけインクリメントし、 'memcpy(* output + some_offset、data、2);'のようにします。データが他の2つのメンバーの前に挿入されている場合は、これらも上に移動する必要があります。 – wildplasser

+0

もう一度ありがとうございます。それは完全に動作します。 – Martin

2

*outputは、直前の読み取りが終了するまでiだけ増加します。 e。 *output + 111

関連する問題