
Lectura de stdin con fgets()
Publicado por Sergi (1 intervención) el 11/03/2015 21:29:51
Buenas, tengo un problema para leer desde entrada estándard. Se trata de un programa de tratamiento de caracteres. Éste funciona bien cuando los canales de entrada y salida son dos ficheros de texto pasados como argumentos, pero me da error "Segmentation Fault" si le pido los datos por teclado. Éste es el código:
A ver si alguien puede ayudarme, gracias!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
int main(int argc, char *argv[]) {
if (strcmp("-h",argv[1]) == 0) { //Help parameter.
printf ("\nAplicació que permet la descompressió d'un fitxer de text.\nÚs: ./decompressor [input] [output]\n\n");
exit(0);
} else if (argc == 3) { //We have input and output files.
FILE *input = NULL;
FILE *output = NULL;
input = fopen(argv[1],"r");
output = fopen (argv[2],"w");
decompress_recursive (input, output);
printf ("\n");
fclose(input);
fclose(output);
} else { //We use stdin and stdout as input and output channels.
decompress_recursive (stdin, stdout);
printf ("\n");
}
return 0;
}
int decompress_recursive (FILE *input, FILE *output) {
char aux[100];
int times, j;
fgets(aux,100,input);
if (aux[0] == '\0') {
return 0;
} else {
char letter = aux[0];
int temp = aux[0];
move(aux);
times = atoi(aux);
for (j = 0; j < times; j++) {
fputc(temp,output);
printf ("%c", letter);
}
return decompress_recursive (input,output);
}
}
A ver si alguien puede ayudarme, gracias!
Valora esta pregunta


0