conjunto de memorias() se utiliza para llenar un bloque de memoria con un valor particular.
La sintaxis de la función memset() es la siguiente:
// ptr ==>Dirección inicial de la memoria a llenar // x ==> Valor a llenar // n ==> Número de bytes a llenar comenzando // desde ptr a llenar void *memset(void *ptr, int x, size_t n );>
Tenga en cuenta que ptr es un puntero vacío, por lo que podemos pasar cualquier tipo de puntero a esta función.
Veamos un ejemplo simple en C para demostrar cómo se usa la función memset():
// C program to demonstrate working of memset()> #include> #include> > int> main()> {> >char> str[50] =>'GeeksForGeeks is for programming geeks.'>;> >printf>(>'
Before memset(): %s
'>, str);> > >// Fill 8 characters starting from str[13] with '.'> >memset>(str + 13,>'.'>, 8*>sizeof>(>char>));> > >printf>(>'After memset(): %s'>, str);> >return> 0;> }> |
cuantas teclas tienen los teclados
>
>
Producción:
Before memset(): GeeksForGeeks is for programming geeks. After memset(): GeeksForGeeks........programming geeks.>
Explicación: (cadena + 13) apunta al primer espacio (índice basado en 0) de la cadena GeeksForGeeks es para expertos en programación, y memset() establece el carácter '.' comenzando desde el primer ' ' de la cadena hasta 8 posiciones de caracteres del dado. cadena y por lo tanto obtenemos el resultado como se muestra arriba.
pruebas y tipos de pruebas
// C program to demonstrate working of memset()> #include> #include> > void> printArray(>int> arr[],>int> n)> {> >for> (>int> i=0; i printf('%d ', arr[i]); } int main() { int n = 10; int arr[n]; // Fill whole array with 0. memset(arr, 0, n*sizeof(arr[0])); printf('Array after memset()
'); printArray(arr, n); return 0; }> |
>
>
Producción:
0 0 0 0 0 0 0 0 0 0>
Ejercicio :
Predecir el resultado del siguiente programa.
// C program to demonstrate working of memset()> #include> #include> > void> printArray(>int> arr[],>int> n)> {> >for> (>int> i=0; i printf('%d ', arr[i]); } int main() { int n = 10; int arr[n]; // Fill whole array with 100. memset(arr, 10, n*sizeof(arr[0])); printf('Array after memset()
'); printArray(arr, n); return 0; }> |
f películas
>
>
Tenga en cuenta que el código anterior no establece valores de matriz en 10, ya que memset funciona carácter por carácter y un número entero contiene más de un byte (o carácter).
Sin embargo, si reemplazamos 10 con -1, obtenemos valores de -1. Porque la representación de -1 contiene todos los 1 en el caso de char e int.
Referencia: página de manual de memset (linux)