[ Foro de C ]

Obtener datos limite

28-Feb-2020 15:31
Invitado (Shumaro)
1 Respuestas

El programa pide datos, si excedo del limite de caracteres utiliza los sobrantes para llenar las demas variables, como evito eso? pense usar fgets pero no sabria como implementarlo en mi codigo sin tener que hacer uno por cada variable.


#include <stdio.h>
#include <stdlib.h>

int main()
{
    char nombre[21], dept[21], calle [21], ciudad[16], estado[4], codpos[6], tel[13];
    void obtcaden(), impcaden();
    printf("Introduce el nombre: ");
    obtcaden(nombre,21);
    printf("\ndepartamento: ");
    obtcaden(dept,21);
    printf("\ncalle y numero: ");
    obtcaden(calle,21);
    printf("\ncuidad: ");
    obtcaden(ciudad,16);
    printf("\nestado: ");
    obtcaden(estado,4);
    printf("\ncodigo postal: ");
    fflush(stdin);
    obtcaden(codpos,6);
    printf("\nnumero telefonico: ");
    fflush(stdin);
    obtcaden(tel,13);
    printf("\n");
    //pasa arreglos a impcaden
    impcaden(nombre);
    impcaden(dept);
    impcaden(calle);
    impcaden(ciudad);
    impcaden(estado);
    impcaden(codpos);
    impcaden(tel);
}
//acepta la entrada del usuario y la almacena en un arreglo
void obtcaden(apunacaden,n)
char *apunacaden;
int n;
{
    int i = 0;
    //while ((*apunacaden++ = getchar()) != '\n' && i++ < n);
    while ((*apunacaden++ = getchar()) != '\n' && i++ < n);
    *(--apunacaden) = '\0';
}
//funcion para imrpimir las cadenas de caracteres
void impcaden(apunacaden)
char *apunacaden;
{
    printf("\n          %s",apunacaden);
}


 


01-Mar-2020 23:49
Nacho Cabanes (+83)

Efectivamente, la solución es emplear "fgets" o, si tu compilador es suficientemente moderno, "gets_s".






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)