Plantilla de para Capturar Datos y Mostrarlos

Usando estructura de datos y memoria dinamica para los datos almacenados.

Descarga plantilla_capturar_mostrar_datos.c

/*
    Twitter: @albertobsd
    email: alberto.bsd@gmail.com   
   
    Buscame tambien en:
    web:        https://programaciontrabajosescolares.blogspot.com/
    e-mail:     ProgramacionTrabajosEscolares@gmail.com
    facebook:    https://www.facebook.com/ProgramacionTrabajosEscolares
*/

#include<stdio.h>    //Funciones printf, fgets
#include<stdlib.h>    //realloc
#include<string.h>    //strcspn
#include<ctype.h>    //tolower

#define MAX_LEN_ALFANUMERICA_1 100
#define MAX_LEN_ALFANUMERICA_2 50
#define MAX_LEN_ALFANUMERICA_3 20

typedef struct plantilla_struct    {
    char variable_alfanumerica_1[MAX_LEN_ALFANUMERICA_1];
    char variable_alfanumerica_2[MAX_LEN_ALFANUMERICA_2];
    char variable_alfanumerica_3[MAX_LEN_ALFANUMERICA_3];
    int variable_entera_1;
    int variable_entera_2;
    int variable_entera_3;
    float variable_flotante_1;
}TIPO;

int funcion_ingreso_de_datos();
int funcion_imprimir_datos();


TIPO *tipos = NULL;
int contador_tipos = 0;

int main()    {
    int opcion;
    int entrar =1;
    char temp[10];
    do    {
            printf("1) funcion_ingreso_de_datos\n");
            printf("2) funcion_imprimir_datos\n");
            printf("3) Salir\n");
            do{
                printf("Ingrese una opcion: ");
                fgets(temp,10,stdin);
                opcion  = strtol(temp,NULL,10);
            }while(opcion <= 0);    //Mientras sea menor o igual que 0
           
            switch(opcion)    {
                case 1:
                    printf("Usted selecciono %i\n",opcion);
                    funcion_ingreso_de_datos();
                break;
                case 2:
                    printf("Usted selecciono %i\n",opcion);
                    funcion_imprimir_datos();
                break;
                case 3:
                    printf("Usted selecciono %i\n",opcion);
                    entrar = 0;
                break;
                default:
                    printf("Opcion incorrecta - Mensaje de Error\n");
                break;
            }
    }while(entrar == 1);    //Se puede dejar como  "}while(entrar);"
    return 0;   
}

int funcion_ingreso_de_datos()    {
    int opcion;
    int entrar =1,entrar_opcion_si_no;
    char temp[10];
    do    {
       
        tipos = realloc(tipos,(contador_tipos+1)*sizeof(struct plantilla_struct));    //Incrementamos el espacio para 1 Variable TIPO mas en el arreglo
               
        //Capturamos variable_alfanumerica_1
        printf("Capture variable_alfanumerica_1: ");
        fgets(tipos[contador_tipos].variable_alfanumerica_1,MAX_LEN_ALFANUMERICA_1,stdin);
        tipos[contador_tipos].variable_alfanumerica_1[strcspn(tipos[contador_tipos].variable_alfanumerica_1,"\n\r")] = '\0';    //Reemplazamos los retornos de linea con caracrer nulo, terminador de cadena
   
        //Capturamos variable_alfanumerica_2
        printf("Capture variable_alfanumerica_2: ");
        fgets(tipos[contador_tipos].variable_alfanumerica_2,MAX_LEN_ALFANUMERICA_2,stdin);
        tipos[contador_tipos].variable_alfanumerica_2[strcspn(tipos[contador_tipos].variable_alfanumerica_2,"\n\r")] = '\0';    //Reemplazamos los retornos de linea con caracrer nulo, terminador de cadena
       
        //Capturamos variable_alfanumerica_3
        printf("Capture variable_alfanumerica_3: ");
        fgets(tipos[contador_tipos].variable_alfanumerica_3,MAX_LEN_ALFANUMERICA_3,stdin);
        tipos[contador_tipos].variable_alfanumerica_3[strcspn(tipos[contador_tipos].variable_alfanumerica_3,"\n\r")] = '\0';    //Reemplazamos los retornos de linea con caracrer nulo, terminador de cadena
       

        //Capturamos variable_entera_1
        do    {
            printf("Capture variable_entera_1: (Solo mayores que 0) ");
            fgets(temp,10,stdin);
            tipos[contador_tipos].variable_entera_1 = strtol(temp,NULL,10);    //Solo procesamos numeros BASE 10
           
        }while(tipos[contador_tipos].variable_entera_1 <= 0);    // Salimos del DO solo si el valore leido es mayor o igual a 1

        //Capturamos variable_entera_2
        do    {
            printf("Capture variable_entera_2: (Solo mayores o iguales que 0) ");
            fgets(temp,10,stdin);
            tipos[contador_tipos].variable_entera_2 = strtol(temp,NULL,10);    //Solo procesamos numeros BASE 10           
        }while(tipos[contador_tipos].variable_entera_2 < 0);    // Salimos del DO solo si el valore leido es mayor o igual a 0
       

        //Capturamos variable_entera_3
        do    {
            printf("Capture variable_entera_3: (Solo Negativos) ");
            fgets(temp,10,stdin);
            tipos[contador_tipos].variable_entera_3 = strtol(temp,NULL,10);    //Solo procesamos numeros BASE 10           
        }while(tipos[contador_tipos].variable_entera_3 >= 0);    // Salimos del DO solo si el valor leido es negativo
       
        //Capturamos variable_flotante_1
        do    {
            printf("Capture variable_flotante_1: (Solo distintos que 0) ");
            fgets(temp,10,stdin);
            tipos[contador_tipos].variable_flotante_1 = strtof(temp,NULL);
        }while(tipos[contador_tipos].variable_flotante_1 == 0.0);    // Salimos del DO solo si el valor leido distinto de 0
               
        entrar_opcion_si_no = 1;
        do{
            printf("Desea segir ingresando mas datos? (s/n)\n");
            fgets(temp,10,stdin);
            switch(tolower(temp[0]))    {
                case 's':
                    entrar_opcion_si_no = 0;
                    printf("Selecciono SI\n");
                break;
                case 'n':
                    entrar_opcion_si_no    = 0;
                    printf("Selecciono NO\n");
                    entrar = 0;    // Se cambia la variable para salir del menu principal
                break;
                default:
                    printf("opcion incorrecta, solo 's' o 'n'\n");
                break;
            }
            opcion  = strtol(temp,NULL,10);
        }while(entrar_opcion_si_no == 1);
       
        contador_tipos++;    //Aqui incrementamos el contador_tipos que indica cuantos valores completos tenemos de la estructura plantilla_struct
    }while(entrar == 1);        //Se puede dejar como  "}while(entrar);"
}

int funcion_imprimir_datos()    {    //Imprimir los datos no tiene mucho sentido, solo hay que recorrer correctamente la cantidad de registros previamente capturados
    int i = 0;
    while(i < contador_tipos)    {
        printf("Datos del registro %i\n",(i+1));
        printf("variable_alfanumerica_1: %s\n",tipos[i].variable_alfanumerica_1);
        printf("variable_alfanumerica_2: %s\n",tipos[i].variable_alfanumerica_2);
        printf("variable_alfanumerica_3: %s\n",tipos[i].variable_alfanumerica_3);
        printf("variable_entera_1: %i\n",tipos[i].variable_entera_1);
        printf("variable_entera_2: %i\n",tipos[i].variable_entera_2);
        printf("variable_entera_3: %i\n",tipos[i].variable_entera_3);
        printf("variable_flotante_1: %f\n",tipos[i].variable_flotante_1);
        printf("\n");//Enter adicional
        i++;
    }
}
Publicar un comentario

Entradas populares de este blog

Clave WPA2 por Defecto de equipos TotalPlay (Huawei HG8245H)

Activar y Validar Windows 7 - Loader 2.2.2

Cable modem Ubee - WPA2 y WPS por defecto