[ Foro de C ]
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);
}
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.)