[ Foro de C ]
Programa que solicite tu nombre, día y mes de nacimiento, posteriormente deberá unirlos todos, en una sola cadena, separando el nombre de la fecha por una coma y el día del mes por una diagonal, ejemplo: “Pedro, nació el 31/12
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
int main()
{
char cadena[150],nombre[50],dia[2],mes[2];
printf("¿como te llamas?\n");
gets(nombre);
printf("¿que dia naciste?\n");
gets(dia);
printf("¿en que mes naciste?\n");
gets(mes);
sprintf(cadena," %s, nacio el %s/%s \n",nombre,dia,mes);
puts(cadena);
system("pause");
}
Cuando lo pongo en fucion no me aparece el nombre me sale esto:
, nacio el 18/8
hola anónimo
ahí hay varias cosas
• por ej gets esta totalmente en desuso ya que no tiene control de límites y se podría escribir en el espacio de otras variables, en cambio fgets si tiene control de límites
• debes tener en cuenta que fgets también copia todo hasta el '\0' con lo que el enter estará presente el la cadena y tendrías que quitarlo explícitamente
• una opción sencilla seria scanf("%[^\n]s", nombre); con lo que guardas hasta encontrar el enter, aunque scanf tampoco tiene control de límites y no es muy recomendable :-(
por otro lado no usas la facilidad que te da sprintf con los formatos, pudiendo hacer dia y mes de tipo entero y el %d en sprintf, el ya lo convierte a carácter
te diría también que hacer una llamada al sistema con system no suele ser buena idea sobre todo pudiendo evitarla con un simple getchar();
podría que dar algo así: https://www.onlinegdb.com/Hk4WU74GO
suerte ;-)
(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.)