C/Visual C - como concatenar a un string un char?

 
Vista:

como concatenar a un string un char?

Publicado por arnaldo (2 intervenciones) el 13/09/2001 19:43:26
Alguien sabe como concatenar a un string un char?
declaracion: char r;
char *cadena=NULL;
proceso: cadena="";
strcpy(cadena,&r);

Pero me sale: el programa hizo una operacion no valida.
Gracias

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:como concatenar a un string un char?

Publicado por Germán B (27 intervenciones) el 13/09/2001 19:52:11
La asignación cadena="" creo que es aceptable para el compilador pero tené cuidado, porque no reserva más memoria para esta variable que la cadena "", es decir no tiene lugar para agregarle nada. Reservá espacio para la cadena en forma dinámica o fija, no sea cuestión que cuando intentes concatenarle algo se corrompa la memoria.
Yendo al tema de tu pregunta, no es válido tomar la dirección (con &) de un char para usarlo en funciones como strcpy o strcat, porque estas funciones asumen que en esa dirección hay un string, y el final de un string se determina con la presencia de un carácter nulo ('\0'). En tu caso tenés r pero no sabés qué hay más allá de r, puede estar tomando un string con cualquier cosa e intentando almacenarlo en cadena, que para colmo no tiene espacio reservado para nada.
Entonces, asumamos que cadena tiene espacio suficiente, por ejemplo reservado en forma fija:
char cadena[80];
Si querés asignarle a la cadena el char r y nada más, podés hacer así:
cadena[0]=r;
cadena[1]='\0';
Si querés concatenar r a lo que ya hay en cadena, así:
cadena[strlen(cadena)+1]='\0';
cadena[strlen(cadena)]=r;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:como concatenar a un string un char?

Publicado por emilio (42 intervenciones) el 13/09/2001 23:20:33
En tu ejemplo tienes un error que me hace ver que no entiendes muy bien los punteros. Cuando tienes un puntero a char* lo primero que tienes que hacer es pedir memoria al sistema segun los caracteres que quieras tener en el string, por lo tanto lo que tienes que hacer por ejemplo es:
char *cadena=(char*)malloc(sizeof(char)*n); //n es el numero de caracteres

Tienes que tomar en cuenta que tu tambien tienes que librar este espacio al final de la manera:
free(cadena);
Y si nececitas mas espacio usa realloc (fijate en la ayuda).

De aqui todo lo demas es como dice German.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar