[C con Clase] funcion de busqueda y reemplazo de cadenas con libreria dinamica

Programante programante en gmail.com
Vie Nov 20 23:20:10 CET 2009


Diego Alejandro escribió:
> hola lista,
> tengo una dificulta con una función de  una libraría dinámica que
> estoy haciendo, cuando la utilizo por solo una ocasión no hay
> problema,  pero cuando la utilizo por segunda vez (reenviando la
> cadena recibida en la primera vez) recibo solo una parte de la cadena
> (primeras 12 letras) seguida de un caracater extraño (en mi caso
> flechita a la derecha).
>   


>   char *t5 = malloc(0);
>       strncpy(t5+strlen(t5),*buf,t4-*buf);
>   
Un puntero donde has reservado 0 bytes es prácticamente idéntico a un
puntero nulo (de hecho algunas implementaciones es lo que devuelven).
No puedes hacerle un strlen() porque strlen() busca en esa memoria
buscando un \0 que no has hecho.

En general, estás omitiendo en toda la función la reserva de memoria de
t5, y todos los accesos que le haces son inválidos.
Deberías reservar memoria, inicialmente ponerlo a \0 y según tienes que
añadirle texto, aumentarle el espacio asignado.





Más información sobre la lista de distribución Cconclase