Curso de Programación en C/Prog121
Ir a la navegación
Ir a la búsqueda
Prog121
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 struct NombreConteo ObtenInfo( void );
15 struct NombreConteo mkInfo( struct NombreConteo );
16 void DesplegaInfo( const struct NombreConteo );
17
18 int main( void )
19 {
20 struct NombreConteo Persona;
21
22 Persona = ObtenInfo();
23 Persona = mkInfo( Persona );
24 DesplegaInfo( Persona );
25 return 0;
26 }
27
28 struct NombreConteo ObtenInfo( void )
29 {
30 struct NombreConteo temp;
31
32 printf( "Favor de ingresar su nombre: " );
33 if( fgets( temp.Nombre, MAXNOMBRELEN - 2, stdin ) &&
34 temp.Nombre[0] != '\n' )
35 {
36 if( *(temp.Nombre + strlen( temp.Nombre ) -1 ) != '\n' )
37 {
38 printf( "El Nombre que entraste es demasiado largo.\n"
39 "Solo %d chars MAX\n", MAXNOMBRELEN - 2 );
40 exit(1);
41 }
42
43 *(temp.Nombre + strlen( temp.Nombre ) -1 ) = '\0';
44 }
45 else
46 {
47 puts( "Falta su Nombre" );
48 exit(1);
49 }
50
51 printf( "Favor de ingresar su apellido paterno: " );
52 if( fgets( temp.Apellido, MAXNOMBRELEN - 2, stdin ) &&
53 temp.Apellido[0] != '\n' )
54 {
55 if( *(temp.Apellido + strlen( temp.Apellido ) -1 ) != '\n' )
56 {
57 printf( "El apellido paterno que entraste es demasiado largo.\n"
58 "Solo %d chars MAX\n", MAXNOMBRELEN - 2 );
59 exit(1);
60 }
61
62 *(temp.Apellido + strlen( temp.Apellido ) -1 ) = '\0';
63 }
64 else
65 {
66 puts( "Falta su apellido paterno" );
67 exit(1);
68 }
69 return temp;
70 }
71
72 struct NombreConteo mkInfo( struct NombreConteo info )
73 {
74 info.Letras = strlen( info.Nombre ) +
75 strlen( info.Apellido );
76 return info;
77 }
78
79 void DesplegaInfo( const struct NombreConteo info )
80 {
81 printf( "%s %s, tu nombre contiene %d Letras.\n",
82 info.Nombre, info.Apellido, info.Letras );
83 }
Resultado
[rrc@llawyr CClase]$ gcc -Wall -o Prog121 Prog121.c [rrc@llawyr CClase]$ ./Prog121 Favor de ingresar su nombre: Falta su Nombre [rrc@llawyr CClase]$ ./Prog121 Favor de ingresar su nombre: RichardConMuchasLetras El Nombre que entraste es demasiado largo. Solo 18 chars MAX [rrc@llawyr CClase]$ ./Prog121 Favor de ingresar su nombre: Richard Favor de ingresar su apellido paterno: Couture Richard Couture, tu nombre contiene 14 Letras. [rrc@llawyr CClase]$