[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