hola a todos, tengo un programita que debe recibir la fecha de nacimiento con enteros y despues mostrarlo unido como una cadena, lo recibo y paso a cadena los enteros, lo unico que al copiar o concatenar a una sola cadena no me lo copia aqui el codigo:
#include <string.h>
#include <stdio.h>
#include<stdlib.h>
int main(void)
{
char destination[25];
char *blank = "-";
char dias[2];
char mess[2];
char age[4];
int dia, anho;
int mes;
printf("ingrese dia: ");scanf("%d",&dia);
printf("ingrese mes; ");scanf("%d",&mes);
printf("ingrese anho: ");scanf("%d",&anho);
//int char base
itoa(dia,dias,10); //paso entero a cadena
itoa(mes,mess,10);//aqui no hay problema porque ya debugge
itoa(anho,age,10);
//aqui creo que esta el problema porque solo aparece el anho
strcpy(destination, dias); //copiar a una sola variable
strcat(destination, blank);
strcat(destination, mess); //concatenando lo demas
strcat(destination, blank);
strcat(destination, age);
printf("\nla cadena %s", destination); //mostrando la nueva cadena
system("pause");
return 0;
}
agradecere su orientacion,
Para gestionar cadenas en C has de tener en cuenta que éstas han de terminar con el carácter '\0'. Es decir, "cadena" necesita de, al menos, un array de 7 caracteres ( 6 por cada letra de la palabra + 1 para el caracter nulo ).
Dicho esto, las cadenas "dias", "mess" y "age" no cumplen los requisitos.
Además, la concatenación la puedes simplificar bastante:
sprintf( destination, "%s-%s-%s", dias, mess, age );
El código de arriba es equivalente a:
strcpy(destination, dias);
strcat(destination, blank);
strcat(destination, mess);
strcat(destination, blank);
strcat(destination, age);
Como nota informativa, destination ha de tener una longitud mínima de 2 (dias) + 2 (mess) + 4 (age) + 2 (los guiones) + 1 (nulo) = 11 caracteres.
te agradezco, porque lo del fin de cadena lo habia dejado pasar por alto