Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Interleave two or more files
- Build:
- g++ -mno-cygwin -o interleave interleave.cpp
- FILE *fo = fopen(argv[1], "wb");
- if (!fo) { fprintf(stderr, "Error opening output file!n"); return 1; }
- int bufsize = strtoul(argv[2],0,0);
- unsigned char *buffer = new unsigned char[bufsize];
- FILE *fi[32];
- int files = 0;
- for (int a=3; argv[a]; a++)
- {
- fi[files] = fopen(argv[a], "rb");
- if (!fi[files]) { fprintf(stderr, "Error opening input file!n"); return 1; }
- files++;
- }
- int files_active = files;
- for (int f=0; files_active; f++)
- {
- if (f == files) f = 0;
- int read = 0;
- if (fi[f])
- {
- read = fread(buffer, 1, bufsize, fi[f]);
- if (read <= 0) { fclose(fi[f]); fi[f] = 0; files_active--; continue; }
- fwrite(buffer, 1, read, fo);
- }
- //if (bufsize > read)
- {
- memset(buffer, 0, bufsize - read);
- fwrite(buffer, 1, bufsize - read, fo);
- }
- }
- fclose(fo);
- delete [] buffer;
- return 0;
Add Comment
Please, Sign In to add comment