Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: NeoB en 9 Abril 2012, 22:40 PM

Título: Ayuda en C. Unir char a char[] SOLUCIONADO
Publicado por: NeoB en 9 Abril 2012, 22:40 PM
Buenas, tengo un problema que no consigo resolver en C, y espero que puedan ayudarme.
Quiero unir un char (ejemplo '9') a una cadena (ejemplo "6533") de forma que luego imprima la cadena y sea "65339".
He googleado bastante y veo que con strcat() puedo unir dos cadenas, pero yo quiero unir una cadena y un carácter, y al intentarlo con strcat() me da error.
¿Hay alguna función que lo haga? ¿De que manera puedo hacerlo? Gracias.
Título: Re: Ayuda en C. Unir char a char[]
Publicado por: DaniekL en 9 Abril 2012, 23:22 PM
Prueba esto

char *cadena;
int numero;
strcat(cadena, itoa(numero));
Título: Re: Ayuda en C. Unir char a char[]
Publicado por: durasno en 9 Abril 2012, 23:39 PM
Hola! como itoa no es estandar, lo que podrias hacer es buscar la posicion donde se encuentra el caracter '\0' y ahi guardes ese caracter que queres concatenar. No te olvides que despues del caracter guardado tenes que guardar el '\0' al final

Saludos

PD: acordate que el arreglo tiene q ser lo suficientement grande como para guardar un caracter mas(si trabajas con punteros vas a tener q reservar memoria)
Título: Re: Ayuda en C. Unir char a char[]
Publicado por: armizh en 10 Abril 2012, 00:22 AM
A mi se me ocurre esta solución!
char * cadena;
char caracter;
/* ... */
for(;*cadena='\0';*cadena++);
*cadena++ = caracter;
*cadena = '\0';

Todo esto dentro del main... claro, es una de las soluciones que se me ocurre :D Espero que se entienda bien lo que se esta haciendo con esto...

Saludos!
Título: Re: Ayuda en C. Unir char a char[]
Publicado por: Beakman en 10 Abril 2012, 02:35 AM
strcat recibe dos char*. Si querés pasarle un solo carácter podés agregarle un '\0'.
Código (cpp) [Seleccionar]
char caracter = 'a';
char aux[ 2 ];
aux[ 0 ] = caracter;
aux[ 1 ] = '\0';
Título: Re: Ayuda en C. Unir char a char[]
Publicado por: NeoB en 10 Abril 2012, 23:07 PM
Ok, ya lo solucioné, ¡se me había olvidado poner al final un '\0' !! ...fallo tonto... Muchas gracias.