comando memset
Hola!!! Alguien sabria explicarme con detalle para que sirve la funcion memset, la miro en la ayuda pero no me queda nada claro.
Un ejemplo : Si meto el siguiente codigo
int i;
int longitud;
int vector[10];
longitud=sizeof(vector);
i=0;
while (i<10)
{
vector[i]=5;
i++;
}
memset (&(vector[0]),1,4);
}
El resultado para vector es : (16843009,5,5,5,5,5,5,5,5,5)
¿Por qué 16843009? no se deberÃa haber llenado esa posicion con un 1
Gracias y saludos a todos.
Un ejemplo : Si meto el siguiente codigo
int i;
int longitud;
int vector[10];
longitud=sizeof(vector);
i=0;
while (i<10)
{
vector[i]=5;
i++;
}
memset (&(vector[0]),1,4);
}
El resultado para vector es : (16843009,5,5,5,5,5,5,5,5,5)
¿Por qué 16843009? no se deberÃa haber llenado esa posicion con un 1
Gracias y saludos a todos.
memset llena byte por byte de "unos" (en este caso)pero tus int ocupan dos (o cuatro) bytes por eso el primer int contendra el numero binario:
00000001 00000001
Ya que se llenaron los dosprimeros bytes de unos (lo que tu lees como un int)
La pagina del manual de memset puedes encontrarla en:
http://www.linuxinfor.com/spanish/man3/memset.html
Es una pagin sobre Linux, pero abajo se detalla que memset cumple con los estandres SVID 3, BSD 4.3 e ISO 9899, si tu compilador cumple estos estandares la infomracion te serira.
Para hacer lo que tu quieres usa un bucle for... es mas simple.
00000001 00000001
Ya que se llenaron los dosprimeros bytes de unos (lo que tu lees como un int)
La pagina del manual de memset puedes encontrarla en:
http://www.linuxinfor.com/spanish/man3/memset.html
Es una pagin sobre Linux, pero abajo se detalla que memset cumple con los estandres SVID 3, BSD 4.3 e ISO 9899, si tu compilador cumple estos estandares la infomracion te serira.
Para hacer lo que tu quieres usa un bucle for... es mas simple.
