memset() se usa para llenar un bloque de memoria con un valor particular.
La sintaxis de la función memset() es la siguiente:
// ptr ==> Starting address of memory to be filled // x ==> Value to be filled // n ==> Number of bytes to be filled starting // from ptr to be filled 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 <stdio.h> #include <string.h> int main() { char str[50] = "GeeksForGeeks is for programming geeks."; printf("\nBefore memset(): %s\n", str); // Fill 8 characters starting from str[13] with '.' memset(str + 13, '.', 8*sizeof(char)); printf("After memset(): %s", str); return 0; }
Producción:
Before memset(): GeeksForGeeks is for programming geeks. After memset(): GeeksForGeeks........programming geeks.
Explicación: (str + 13) apunta al primer espacio (índice basado en 0) de la string «GeeksForGeeks es para geeks de programación», y memset() establece el carácter ‘.’ comenzando desde el primer » de la string hasta 8 posiciones de caracteres de la string dada y, por lo tanto, obtenemos el resultado como se muestra arriba.
// C program to demonstrate working of memset() #include <stdio.h> #include <string.h> void printArray(int arr[], int n) { for (int i=0; i<n; 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()\n"); printArray(arr, n); return 0; }
Producción:
0 0 0 0 0 0 0 0 0 0
Ejercicio:
Prediga la salida del siguiente programa.
// C program to demonstrate working of memset() #include <stdio.h> #include <string.h> void printArray(int arr[], int n) { for (int i=0; i<n; 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()\n"); printArray(arr, n); return 0; }
Tenga en cuenta que el código anterior no establece valores de array en 10, ya que memset funciona carácter por carácter y un número entero contiene más de un byte (o caracteres).
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 man de memset (linux)
Este artículo es una contribución de MAZHAR IMAM KHAN . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA