elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  problemas con concatenar cadenas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: problemas con concatenar cadenas  (Leído 2,140 veces)
d91

Desconectado Desconectado

Mensajes: 165


Ver Perfil
problemas con concatenar cadenas
« en: 15 Abril 2014, 15:30 pm »

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:
Código
  1. #include <string.h>
  2. #include <stdio.h>
  3. #include<stdlib.h>
  4.  
  5. int main(void)
  6. {
  7.   char destination[25];
  8.   char *blank = "-";
  9.   char dias[2];
  10.   char mess[2];
  11.   char age[4];
  12.  
  13.   int dia, anho;
  14.   int mes;
  15.  
  16.   printf("ingrese dia: ");scanf("%d",&dia);
  17.   printf("ingrese mes; ");scanf("%d",&mes);
  18.   printf("ingrese anho: ");scanf("%d",&anho);
  19.  
  20.      //int char base
  21.   itoa(dia,dias,10);  //paso entero a cadena
  22.   itoa(mes,mess,10);//aqui no hay problema porque ya debugge
  23.   itoa(anho,age,10);
  24.  
  25.   //aqui creo que esta el problema porque solo aparece el anho
  26.   strcpy(destination, dias);  //copiar a una sola variable
  27.   strcat(destination, blank);
  28.   strcat(destination, mess);   //concatenando lo demas
  29.   strcat(destination, blank);
  30.   strcat(destination, age);
  31.  
  32.   printf("\nla cadena %s", destination); //mostrando la nueva cadena
  33.   system("pause");
  34.   return 0;
  35. }
  36.  
  37.  
agradecere su orientacion,


En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: problemas con concatenar cadenas
« Respuesta #1 en: 15 Abril 2014, 15:38 pm »

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:

Código
  1. sprintf( destination, "%s-%s-%s", dias, mess, age );

El código de arriba es equivalente a:

Código
  1. strcpy(destination, dias);
  2. strcat(destination, blank);
  3. strcat(destination, mess);
  4. strcat(destination, blank);
  5. 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.




En línea

d91

Desconectado Desconectado

Mensajes: 165


Ver Perfil
Re: problemas con concatenar cadenas
« Respuesta #2 en: 15 Abril 2014, 15:53 pm »

te agradezco, porque lo del fin de cadena lo habia dejado pasar por alto
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema al concatenar cadenas
PHP
Feedeex 4 4,800 Último mensaje 13 Mayo 2011, 12:49 pm
por Feedeex
Concatenar cadenas
Programación C/C++
caronte80 4 4,374 Último mensaje 31 Agosto 2012, 23:38 pm
por avesudra
Concatenar cadenas con memoria dinámica en lenguaje C.
Programación C/C++
NOB2014 3 4,537 Último mensaje 19 Junio 2016, 19:22 pm
por AlbertoBSD
Problemas con for y concatenar caracteres.
Java
#Aitor 2 3,621 Último mensaje 29 Junio 2017, 14:43 pm
por #Aitor
Concatenar cadenas o string verticalmente
Programación General
Flamer 6 4,601 Último mensaje 15 Julio 2017, 13:58 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines