Это работает для меня.Это программа, которая копирует гласные и перевод строки ('\ n') из файла, указанного в 1-м аргументе, в файл в 2-м аргументе.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv) {
FILE *fi, *fo;
if (argc != 3) {
fprintf(stderr, "syntax: %s in out\n", argv[0][0]?argv[0]:"program");
fprintf(stderr, "copies vowels and linefeeds from in to out\n");
exit(EXIT_FAILURE);
}
fi = fopen(argv[1], "r");
if (!fi) {
perror("input file");
exit(EXIT_FAILURE);
} else {
fo = fopen(argv[2], "w");
if (!fo) {
perror("output file");
exit(EXIT_FAILURE);
} else {
int ch;
while ((ch = fgetc(fi)) != EOF) {
switch (ch) {
case 'a': case 'e': case 'i':
case 'o': case 'u': case '\n':
fputc(ch, fo);
break;
default:
break; /* do nothing */
}
}
fclose(fo);
}
fclose(fi);
}
return 0;
}
Когда я запускаю его с указанным выше источником в качестве ввода (./a.out 5292243.c 5292243.vowels
), полученный файл содержит
iueio
iuei
iaiiaaa
io
ia
ieaiouaaoa
ieoieoeaieeeoioou
ei
ioea
ii
eoiuie
ei
ee
ooea
io
eoouuie
ei
ee
i
ieei
i
aeaaeeaei
aeoaeuaeuo
eaueaooi
oeo
oei
eu