[ Foro de C ]

Puedo ingresar datos en unas lineas pero en otras no en el .exe

07-Sep-2020 02:11
Invitado (JuanPR)
1 Respuestas

Buenas, de antemano agradezco la ayuda, tengo el siguiente código:
printf ("Por favor digite los siguientes datos:\n Nombre:");
scanf("%s", &Nombre1);
printf("\nNombre de la mascota:");
scanf("%s", &Nombremasc1);
printf("\nEdad de la mascota:");
scanf("%d", &Edad1);
printf("\nTelefono:");
scanf("%d", &Telefono1);
printf("\nRaza:");
scanf("%s", &raza1);
printf("\nTipo de mascota:");
scanf("%s", &tm1);

Resulta que solo me deja ingresar los datos del nombre, nombre de la mascota, edad, posteriormente muestra Telefono: Raza: pero en estos dos no me deja escribir nada, salta directamente al tipo de mascota en el cual si me deja escribir. ¿Qué tengo mal?


07-Sep-2020 07:37
Nacho Cabanes (+65)

Lee el apartado 5.2.4 del curso de C:

https://www.aprendeaprogramar.com/mod/resource/view.php?id=615

Textualmente:

Existe un posible problema cuando se mezcla el uso de "gets" y el de "scanf": si primero leemos un número, al usar "scanf("%d", ...", la variable numérica guardará el número... pero el Intro que pulsamos en el teclado después de introducir ese número queda esperando en el buffer (la memoria intermedia del teclado). Si a continuación leemos un segundo número, no hay problema, porque se omite ese Intro, pero si leemos una cadena de texto, ese Intro es aceptable, porque representaría una cadena vacía. Por eso, cuando primero leemos un número y luego una cadena usando "gets", tendremos que "absorber" el Intro, o de lo contrario el texto no se leería correctamente. Una forma de hacerlo sería usando "getchar":

scanf("%d", &numero);
getchar();
gets(texto);
 






Si ya eres usuario del sistema, puedes contestar desde tu cuenta y así ganar prestigio.

Si sólo eres un visitante, puedes optar por...