Consider the following simplified code bellow. I want to extract some binary data/stream from a file and print it to the standard output in Hexadecimal format.
I got extra 3 bytes 0xFFFFFF. What's wrong? From where did the extra bytes come?
output
in:
        2000FFFFFFAF00690033005A00
out:
        2000FFFFFFAF00690033005A00
program.c
#include <stdio.h>
#include <stdlib.h>    
int main(int argc, char** argv) {
    int i;
    char raw[10] = {0x20,0x00,0xAF,0x00,0x69,0x00,0x33,0x00,0x5A,0x00};
    FILE *outfile;
    char *buf;
    printf("in:\n\t");
    for( i=0; i<10; i++ )
        printf("%02X", raw[i]);
    outfile = fopen("raw_data.bin", "w+b");
    fwrite(raw, 1, 10, outfile);
    buf = (char *) malloc (32 * sizeof(char));
    fseek(outfile, 0, SEEK_SET);
    fread(buf, 1, 10, outfile);
    printf("\nout:\n\t");
    for( i=0; i<10; i++ )
        printf("%02X", buf[i]);
    printf("\n");
    fclose(outfile);
    return 0;
}