#include #include #include #define BUFSIZE (4096 * 1024) #define BUFSIZE_HALF (BUFSIZE / 2) static unsigned char in_buffer[BUFSIZE]; static unsigned char out_buffer[BUFSIZE_HALF]; int main(int argc, char *argv[]) { FILE *fp; int i; if (argc < 3) { printf("%s [infile] [outfile]\n", argv[0]); goto fin0; } fp = fopen(argv[1], "r"); if (fp == NULL) { printf("file open error (%s)\n", argv[1]); goto fin0; } memset(in_buffer, ~0, sizeof(in_buffer)); fread(in_buffer, 1, sizeof(in_buffer), fp); fclose(fp); for (i = 0; i < sizeof(out_buffer); i += 2) { out_buffer[i + 0] = in_buffer[i]; out_buffer[i + 1] = in_buffer[i + BUFSIZE_HALF]; } fp = fopen(argv[2], "w"); if (fp == NULL) { printf("file open error (%s)\n", argv[2]); goto fin0; } fwrite(out_buffer, sizeof(out_buffer), 1, fp); fclose(fp); fin0: return 0; }