FILE *tar; FILE *new; char buffer[4096]; tar = fopen("mytarfile.tar", rb); new = fopen("mynewfile.tar", w+b); while ( !feof(tar) ) { fread(buffer, 1, 4094, tar); fwrite(buffer, 1, 4094, new); } fclose(tar); fclose(new); That's really off the top of my head, virtually no error checking.