Open In App

memset() in C with examples

Improve
Improve
Like Article
Like
Save
Share
Report

memset() is used to fill a block of memory with a particular value.
The syntax of memset() function is as follows :

// 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);

Note that ptr is a void pointer, so that we can pass any type of pointer to this function.

Let us see a simple example in C to demonstrate how memset() function is used:





Output:

Before memset(): GeeksForGeeks is for programming geeks.
After memset(): GeeksForGeeks........programming geeks.

Explanation: (str + 13) points to first space (0 based index) of the string “GeeksForGeeks is for programming geeks.”, and memset() sets the character ‘.’ starting from first ‘ ‘ of the string up to 8 character positions of the given string and hence we get the output as shown above.





Output:

0 0 0 0 0 0 0 0 0 0


Exercise :

Predict the output of below program.




// 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;
}


Note that the above code doesn’t set array values to 10 as memset works character by character and an integer contains more than one bytes (or characters).

However, if we replace 10 with -1, we get -1 values. Because representation of -1 contains all 1s in case of both char and int.

Reference: memset man page (linux)



Last Updated : 28 Jun, 2021
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads