You are on page 1of 2

Como ingresar caracteres y devolver un nmero por ELINV.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//Estructura que necesitamos
struct Meses {
int numero;
char nombre[11];
};
//Inicializamos la misma.
struct Meses mes[12] =
{ {
{
{
{
{
{
{
{
{
{
{
{
//Prototipo de las funciones.
void mostrar(char *cad);
void minusculas(char *s);

1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,

"Enero"
"Febrero"
"Marzo"
"Abril"
"Mayo"
"Junio"
"Julio"
"Agosto"
"Septiembre"
"Octubre"
"Noviembre"
"Diciembre"

},
},
},
},
},
},
},
},
},
},
},
} };

//Funcion principal.
int main(void)
{
//Variable para contener la cadena ingresada
char cad[11];
//Solicitamos el ingreso.
printf("Introduce un mes: ");
scanf("%10s",cad); // lee maximo 10 caracteres y le concatena el caracter c
ero.
//Convertimos a minuscula la cadena ingresada para comparar a posteriori
minusculas(cad);
//Llamamos a la funcion mostrar
mostrar(cad);
getchar();
}
//Mostrar la estructura y el numero del mes.
void mostrar(char *cad){
//Declaramos variables que necesitamos
int x;
int numero_de_mes=0;
//Para el nombre del mes que convertiremos a minuscula
char nombre_del_mes[11];
//Bucle para mostrar la estructura
for (x = 0; x < 12; x++){
//Mostramos cada elemento de la estructura
printf ("Numero %d es el mes %s\n", mes[x].numero, mes[x].nombre);
//en C comparar cadenas con == no es posible, entonces...
//Copiamos cada elemento a nuestro char
strcpy(nombre_del_mes, mes[x].nombre);
//Convertimos a minuscula para comparar insensiblemente
minusculas(nombre_del_mes);
//Si el parametro que recibe la funcion y el elemento actual de la estru

ctura son iguales.


if(strcmp(cad, nombre_del_mes) == 0){
//Asignamos a esta variable el valor que contiene el numero del mes.
numero_de_mes = mes[x].numero;
}
}
//Finalmente mostramos el resultado de tanto esfuerzo.
printf("\nEl mes que ha seleccionado es %s, y su numero es: %d\n", mes[numer
o_de_mes-1].nombre, numero_de_mes);
}
//Convertir a minusculas
void minusculas(char *s){
//Recorremos el char y convertimos a minuscula
while(*s!='\0'){
if(*s>='A' && *s<='Z'){
*s+=(char)32;
}
s++;
}
}

You might also like