Curso de Programación en C/Prog120

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

Prog120

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4 
 5 #define MAXNOMBRELEN 20
 6 
 7 struct NombreConteo
 8 {
 9   char Nombre[MAXNOMBRELEN];
10   char Apellido[MAXNOMBRELEN];
11   int Letras;
12 };
13 
14 void ObtenInfo( struct NombreConteo * );
15 void mkInfo( struct NombreConteo * );
16 void DesplegaInfo( const struct NombreConteo * );
17 
18 int main( void )
19 {
20   struct NombreConteo Persona;
21 
22   ObtenInfo( &Persona );
23   mkInfo( &Persona );
24   DesplegaInfo( &Persona );
25   return 0;
26 }
27 
28 void ObtenInfo( struct NombreConteo * pst )
29 {
30   printf( "Favor de ingresar su nombre: " );
31   if( fgets( pst->Nombre, MAXNOMBRELEN - 2, stdin ) &&
32              pst->Nombre[0] != '\n' )
33   {
34     if( *(pst->Nombre + strlen( pst->Nombre ) -1 ) != '\n' )
35     {
36       printf( "El Nombre que entraste es demasiado largo.\n"
37               "Solo %d chars MAX\n", MAXNOMBRELEN - 2 );
38       exit(1);
39     }
40 
41     *(pst->Nombre + strlen( pst->Nombre ) -1 ) = '\0';
42   }
43   else
44   {
45     puts( "Falta su Nombre" );
46     exit(1);
47   }
48 
49   printf( "Favor de ingresar su apellido paterno: " );
50   if( fgets( pst->Apellido, MAXNOMBRELEN - 2, stdin ) &&
51              pst->Apellido[0] != '\n' )
52   {
53     if( *(pst->Apellido + strlen( pst->Apellido ) -1 ) != '\n' )
54     {
55       printf( "El apellido paterno que entraste es demasiado largo.\n"
56               "Solo %d chars MAX\n", MAXNOMBRELEN - 2 );
57       exit(1);
58     }
59 
60     *(pst->Apellido + strlen( pst-> Apellido ) -1 ) = '\0';
61   }
62   else
63   {
64     puts( "Falta su apellido paterno" );
65     exit(1);
66   }
67 }
68 
69 void mkInfo( struct NombreConteo * pst )
70 {
71   pst->Letras = strlen( pst->Nombre ) +
72                  strlen( pst->Apellido );
73 }
74 
75 void DesplegaInfo( const struct NombreConteo * pst )
76 {
77   printf( "%s %s, tu nombre contiene %d Letras.\n",
78                pst->Nombre, pst->Apellido, pst->Letras );
79 }

Resultado

[rrc@llawyr CClase]$ gcc -Wall -o Prog120 Prog120.c
[rrc@llawyr CClase]$ ./Prog120
Favor de ingresar su nombre: 
Falta su Nombre
[rrc@llawyr CClase]$ ./Prog120
Favor de ingresar su nombre: RichardConMuchasLetras
El Nombre que entraste es demasiado largo.
Solo 18 chars MAX
[rrc@llawyr CClase]$ ./Prog120
Favor de ingresar su nombre: Richard
Favor de ingresar su apellido paterno: Couture
Richard Couture, tu nombre contiene 14 Letras.
[rrc@llawyr CClase]$ 

Explicación