80 lines
1.7 KiB
C
80 lines
1.7 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
unsigned count = 1000;
|
|
int fnumber;
|
|
char fname[100];
|
|
char *ifil;
|
|
char *ofil;
|
|
FILE *is;
|
|
FILE *os;
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
int i, c, f;
|
|
int iflg = 0;
|
|
|
|
for (i = 1; i < argc; i++)
|
|
if (argv[i][0] == '-')
|
|
switch (argv[i][1]) {
|
|
case '\0':
|
|
iflg = 1;
|
|
continue;
|
|
|
|
case '0':
|
|
case '1':
|
|
case '2':
|
|
case '3':
|
|
case '4':
|
|
case '5':
|
|
case '6':
|
|
case '7':
|
|
case '8':
|
|
case '9':
|
|
count = atoi(argv[i] + 1);
|
|
continue;
|
|
}
|
|
else if (iflg)
|
|
ofil = argv[i];
|
|
else {
|
|
ifil = argv[i];
|
|
iflg = 2;
|
|
}
|
|
if (iflg != 2)
|
|
is = stdin;
|
|
else if ((is = fopen(ifil, "r")) == NULL) {
|
|
perror(ifil);
|
|
exit(1);
|
|
}
|
|
if (ofil == 0)
|
|
ofil = "x";
|
|
|
|
loop:
|
|
f = 1;
|
|
for (i = 0; i < count; i++)
|
|
do {
|
|
c = getc(is);
|
|
if (c == EOF) {
|
|
if (f == 0)
|
|
fclose(os);
|
|
exit(0);
|
|
}
|
|
if (f) {
|
|
for (f = 0; ofil[f]; f++)
|
|
fname[f] = ofil[f];
|
|
fname[f++] = fnumber / 26 + 'a';
|
|
fname[f++] = fnumber % 26 + 'a';
|
|
fname[f] = '\0';
|
|
fnumber++;
|
|
if ((os = fopen(fname, "w")) == NULL) {
|
|
fprintf(stderr, "Cannot create output\n");
|
|
exit(1);
|
|
}
|
|
f = 0;
|
|
}
|
|
putc(c, os);
|
|
} while (c != '\n');
|
|
fclose(os);
|
|
goto loop;
|
|
}
|