comando memset

yecko
05 de Agosto del 2005
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.

hiei
05 de Agosto del 2005
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.