Añadir caracter a cadena

19/04/2005 - 10:33 por Josep Maria | Informe spam
Hola, como puedo hacer para añadir un carácter a una
cadena (tira de caracteres) ?

Lex explico, tengo una zona de memoria (a la que apunta un
puntero p) en la que tengo una serie de caràcteres
grabados consecutivamente. Por otra parte tengo una
variable de tipo tira de caràcteres (cadena) con un
determinado valor. Necesito ir añadiendo los carácteres
que me voy encontrando en el buffer de memoria a la cadena.

Supongamos que el buffer de memoria son 30 carácteres.

char *p;
char varaux[100]="Cadena de texto"

He probado hacerlo así y me da error por que me dice que *
(p+ni) no es una cadena sino un char, correcto.

for (ni=0;ni<29;ni++) strcat(varaux,*(p+ni));

He probado hacerlo de esta otra manera y tambien me da
error.

for (ni=0;ni<29;ni++) strcat(varaux,(const char*) *(p+ni));

Por mas que le doy vueltas, y siendo simple el problema
como aparente, no consigo dar con la solución.

Como podría hacerlo ?

Gracias.

Preguntas similare

Leer las respuestas

#1 Sergio
19/04/2005 - 11:27 | Informe spam
Josep Maria wrote:
Hola, como puedo hacer para añadir un carácter a una
cadena (tira de caracteres) ?

Lex explico, tengo una zona de memoria (a la que apunta un
puntero p) en la que tengo una serie de caràcteres
grabados consecutivamente. Por otra parte tengo una
variable de tipo tira de caràcteres (cadena) con un
determinado valor. Necesito ir añadiendo los carácteres
que me voy encontrando en el buffer de memoria a la cadena.

Supongamos que el buffer de memoria son 30 carácteres.

char *p;
char varaux[100]="Cadena de texto"

He probado hacerlo así y me da error por que me dice que *
(p+ni) no es una cadena sino un char, correcto.

for (ni=0;ni<29;ni++) strcat(varaux,*(p+ni));

He probado hacerlo de esta otra manera y tambien me da
error.

for (ni=0;ni<29;ni++) strcat(varaux,(const char*) *(p+ni));

Por mas que le doy vueltas, y siendo simple el problema
como aparente, no consigo dar con la solución.

Como podría hacerlo ?

Gracias.








p = &varaux[strlen(varaux)];
p = 'c';
p++;
p = 0;

Aunque debes controlar que strlen nunca devuelva más de 98.
No se si es lo que querias.
Respuesta Responder a este mensaje
#2 Josep Maria
19/04/2005 - 11:47 | Informe spam
Gracias, pero creo que no es lo que quería.

Yo quiero concatenar (añadir) al final de la cadena varaux
que ya tengo, el contenido del buffer de memoria, es decir
si en el buffer tengo "abcd" y en la cadena tengo "pppp"

quiero tener en la cadena "ppppabcd"

Del buffer solo conozco el puntero de memoria donde
comienza y la longitud en butes. De la cadena conozco el
contenido inicial.

Quiero llegar a tener en la cadena "ppppabcd" con el '\0'
al final de terminación de cadena.

Sabes como hacerlo ?

Gracias otra vez por responder.
Josep Maria wrote:
Hola, como puedo hacer para añadir un carácter a una
cadena (tira de caracteres) ?

Lex explico, tengo una zona de memoria (a la que apunta




un
puntero p) en la que tengo una serie de caràcteres
grabados consecutivamente. Por otra parte tengo una
variable de tipo tira de caràcteres (cadena) con un
determinado valor. Necesito ir añadiendo los carácteres
que me voy encontrando en el buffer de memoria a la




cadena.

Supongamos que el buffer de memoria son 30 carácteres.

char *p;
char varaux[100]="Cadena de texto"

He probado hacerlo así y me da error por que me dice




que *
(p+ni) no es una cadena sino un char, correcto.

for (ni=0;ni<29;ni++) strcat(varaux,*(p+ni));

He probado hacerlo de esta otra manera y tambien me da
error.

for (ni=0;ni<29;ni++) strcat(varaux,(const char*) *




(p+ni));

Por mas que le doy vueltas, y siendo simple el problema
como aparente, no consigo dar con la solución.

Como podría hacerlo ?

Gracias.








p = &varaux[strlen(varaux)];
p = 'c';
p++;
p = 0;

Aunque debes controlar que strlen nunca devuelva más de


98.
No se si es lo que querias.
.

Respuesta Responder a este mensaje
#3 Sergio
19/04/2005 - 13:28 | Informe spam
Josep Maria wrote:
Gracias, pero creo que no es lo que quería.

Yo quiero concatenar (añadir) al final de la cadena varaux
que ya tengo, el contenido del buffer de memoria, es decir
si en el buffer tengo "abcd" y en la cadena tengo "pppp"

quiero tener en la cadena "ppppabcd"

Del buffer solo conozco el puntero de memoria donde
comienza y la longitud en butes. De la cadena conozco el
contenido inicial.

Quiero llegar a tener en la cadena "ppppabcd" con el '\0'
al final de terminación de cadena.

Sabes como hacerlo ?

Gracias otra vez por responder.




A ver si me entero, según tu ejemplo, char *p es la dirección del buffer
donde tienes una cadena, no?:

char *p = NULL;
char varaux[100] = "Esto es una cadena";
...
if (p)
strcat(varaux,p);


Eso debería bastar, o es que no entiendo tu problema.
Respuesta Responder a este mensaje
#4 Josep Maria
22/04/2005 - 12:21 | Informe spam
Gracias por todo, ya resolví el problema.


Josep Maria wrote:
Gracias, pero creo que no es lo que quería.

Yo quiero concatenar (añadir) al final de la cadena




varaux
que ya tengo, el contenido del buffer de memoria, es




decir
si en el buffer tengo "abcd" y en la cadena tengo "pppp"

quiero tener en la cadena "ppppabcd"

Del buffer solo conozco el puntero de memoria donde
comienza y la longitud en butes. De la cadena conozco




el
contenido inicial.

Quiero llegar a tener en la cadena "ppppabcd" con




el '\0'
al final de terminación de cadena.

Sabes como hacerlo ?

Gracias otra vez por responder.




A ver si me entero, según tu ejemplo, char *p es la


dirección del buffer
donde tienes una cadena, no?:

char *p = NULL;
char varaux[100] = "Esto es una cadena";

if (p)
strcat(varaux,p);


Eso debería bastar, o es que no entiendo tu problema.
.

Respuesta Responder a este mensaje
#5 Sergio
22/04/2005 - 13:42 | Informe spam
Josep Maria wrote:
Gracias por todo, ya resolví el problema.






Y como lo hiciste??
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida