Curso de Programación en C/Prog111

De WikiCabal
Ir a la navegación Ir a la búsqueda

Prog111

 1 #include <stdio.h>
 2 #include <stdlib.h>    // prototipo de exit()
 3 #include <string.h>    // prototipo de strcpy() y strcat()
 4 
 5 #define LEN 40
 6 
 7 int main( int argc, char *argv[] )
 8 {
 9   FILE  *IngresoArchivo,
10         *SaliddaArchivo;
11 
12   int ch,
13       Contar = 0;
14 
15   char ArchivoNombre[LEN];
16 
17   if (argc < 2)
18   {
19      fprintf( stderr, "Usado: %s ArchivoNombre\n", argv[0] );
20      exit(1);
21   }
22 
23   if( ( IngresoArchivo = fopen( argv[1], "r" ) ) == NULL )
24   {
25     fprintf( stderr, "No puedo abrir el archivo \"%s\"\n",
26                       argv[1]);
27     exit(2);
28   }
29 
30   strncpy( ArchivoNombre, argv[1], LEN - 5 );
31   ArchivoNombre[LEN - 5] = '\0';
32   strcat( ArchivoNombre,".red" );
33 
34   if( ( SaliddaArchivo = fopen( ArchivoNombre, "w" ) ) == NULL )
35   {
36     fprintf( stderr, "No puedo crear el archivo de salida.\n" );
37     exit(3);
38   }
39 
40   while( ( ch = getc( IngresoArchivo ) ) != EOF )
41     if( !( Contar++ %3 ) )
42       putc( ch, SaliddaArchivo );
43 
44   if( fclose( IngresoArchivo ) != 0 || fclose( SaliddaArchivo ) != 0 )
45     fprintf( stderr, "Error: No puedo cerrar los archivos\n" );
46 
47   return 0;
48 }

Resultado

 
[rrc@llawyr CClase]$ gcc -Wall -o Prog111 Prog111.c
[rrc@llawyr CClase]$ cat Prog111.infile
So even Eddy came oven ready.

[rrc@llawyr CClase]$ ./Prog111 Prog111.infile
[rrc@llawyr CClase]$ cat Prog111.infile.red 
Send money
[rrc@llawyr CClase]$ 

Explicación