Curso de Programación en C/Prog120
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]$