#include #include void main(void) { unsigned char buffer[32768], filename[]="DIVIDED.???", source[256]; unsigned int size, a, i, type; FILE *fin, *fout; printf("分割元のファイル名:"); scanf("%s", source); if ((fin = fopen(source, "rb")) == NULL) { printf("エラー %s をオープンできません。\n", source); return; } fseek(fin, 0, SEEK_END); printf("%s のファイルサイズは %lu バイトです。\n", source, ftell(fin)); fseek(fin, 0, SEEK_SET); do { printf("分割するサイズを選んでください。1:128KB, 2:1.2MB, 3:1.44MB "); scanf("%d", &type); } while (type < 1 || type > 3); a = 0; while (1) { if (feof(fin)) break; filename[8] = (a / 100) + '0'; filename[9] = ((a % 100) / 10) + '0'; filename[10] = (a % 10) + '0'; printf("Writing %s\n", filename); if ((fout = fopen(filename, "wb")) == NULL) { printf("Error. Unable to create %s\n", filename); fclose (fin); return; } if (type == 1) { for (i = 1; i <= 4; i++) { size = fread(buffer, 1, (unsigned int) 32768, fin); fwrite(buffer, 1, size, fout); } } else if (type == 2) { for (i = 1; i <= 38; i++) { size = fread(buffer, 1, (unsigned int) 32768, fin); fwrite(buffer, 1, size, fout); } size = fread(buffer, 1, 5120, fin); fwrite(buffer, 1, size, fout); } else { for (i = 1; i <= 44; i++) { size = fread(buffer, 1, (unsigned int) 32768, fin); fwrite(buffer, 1, size, fout); } size = fread(buffer, 1, 15872, fin); fwrite(buffer, 1, size, fout); } fclose (fout); a++; } fclose (fin); }