memset() en C con ejemplos

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *