static const char *binfile = "book.bin.gz"; #include #include #include FILE *next(int *count); void crash_and_burn(void); int main(void) { int count = 0; int i; int c; FILE *fin = fopen(binfile, "rb"); FILE *fout = next(&count); if (fin == NULL) crash_and_burn(); if (fout == NULL) crash_and_burn(); for (i = 0; (c = fgetc(fin)) != EOF; fputc(c, fout), i++) { if (i == 1000000) { i = 0; fclose(fout); fout = next(&count); if (fout == NULL) crash_and_burn(); } } return 0; } FILE * next(int *count) { char subfile[4096] = {0}; char number[32]; strcpy(subfile, binfile); sprintf(number, "%d", *count); count[0]++; strcat(subfile, number); return fopen(subfile, "wb"); } void crash_and_burn(void) { puts("file problem"); exit(EXIT_FAILURE); }