[C con Clase] Manejo de memoria en C
Steven Richard Davidson
stevenrichard.davidson en gmail.com
Jue Nov 29 09:07:17 CET 2007
Hola Adrián,
On 11/28/07, Adrian Ferreres Esteller <raro82 en hotmail.com> wrote:
> Hola lista:
>
> Tengo un problema sobre manejo de mapeados de memoria en C. Tengo mapeado
> un fichero en memoria. Ese fichero tiene la forma de:
>
> Etiqueta Valor1#Valor2#Valor3
>
> y tengo que cambiar los separadores # por los separadores |. Tengo un
> puntero a void llamado pAux1 que me apunta a la direccion de memoria inicial
> y el codigo que uso es el siguiente
>
> While ((pAux1 = memchr(pAux1,'#',LONG_LINEA) != NULL)
> memset (pAux1,'|',sizeof(char));
>
Programante te ha contestado correctamente, pero quiero agregar a lo dicho.
No recomiendo usar 'memset()' para lo que estás haciendo porque esta
función sirve más bien para bloques de caracteres. Si te das cuenta, y
de hecho lo mencionas, ya tienes la dirección de memoria de cada
carácter '#' de la cadena. Por lo tanto, asigna otro valor para tal
posición usando el puntero 'pAux1' y el operador de asignación. Esto
también lo ha ejemplificado Programante en su mensaje, de esta manera,
while( (pAux1 = memchr( pAux1, '#', TAM_FICHERO )) != NULL )
*((char *)pAux1) = '|';
Espero que esto te ayude.
Steven
Más información sobre la lista de distribución Cconclase