Home »
C programs »
C string programs
Write your own memset() function in C
Here, we are going to learn how to write your own memset() function to fill blocks of memory with a particular value in C?
Submitted by IncludeHelp, on December 07, 2018
As we have discussed in the previous post that memset() is a library function of “string.h” and it is used to fill the memory blocks with a particular value.
Read more: memset() function in C
Writing your own memset() function in C
Here, we are going to create our own "memset()" function...
Function prototype
void myMemSet(void* str, char ch, size_t n);
It will fill n blocks of the str with ch.
Function definition
//memset() function implemention
//function name: myMemSet()
void myMemSet(void* str, char ch, size_t n){
int i;
//type cast the str from void* to char*
char *s = (char*) str;
//fill "n" elements/blocks with ch
for(i=0; i<n; i++)
s[i]=ch;
}
C program to write your own memset() function
#include <stdio.h>
#include <string.h>
#define LEN 10
//memset() function implemention
//function name: myMemSet()
void myMemSet(void* str, char ch, size_t n){
int i;
//type cast the str from void* to char*
char *s = (char*) str;
//fill "n" elements/blocks with ch
for(i=0; i<n; i++)
s[i]=ch;
}
int main(void) {
char arr[LEN];
int loop;
printf("Array elements are (before myMemSet()): \n");
for(loop=0; loop<LEN; loop++)
printf("%d ",arr[loop]);
printf("\n");
//filling all blocks with 0
myMemSet(arr,0,LEN);
printf("Array elements are (after myMemSet()): \n");
for(loop=0; loop<LEN; loop++)
printf("%d ",arr[loop]);
printf("\n");
//filling first 3 blocks with -1
//and second 3 blocks with -2
//and then 3 blocks with -3
myMemSet(arr,-1,3);
myMemSet(arr+3,-2,3);
myMemSet(arr+6,-3,3);
printf("Array elements are (after myMemSet()): \n");
for(loop=0; loop<LEN; loop++)
printf("%d ",arr[loop]);
printf("\n");
return 0;
}
Output
Array elements are (before myMemSet()):
64 86 -85 42 -4 127 0 0 0 0
Array elements are (after myMemSet()):
0 0 0 0 0 0 0 0 0 0
Array elements are (after myMemSet()):
-1 -1 -1 -2 -2 -2 -3 -3 -3 0
Explanation
In this example, we declared character array arr of LEN bytes (LEN is a macro with the value 10), when we printed the value of arr, the output is garbage because array is uninitialized. Then, we used myMemSet() and filled all elements by 0. Then, printed the elements again the value of all elements were 0. Then, we filled first 3 elements with -1 and next 3 elements with -2 and next 3 elements with -3. Thus the values of all elements at the end: -1 -1 -1 -2-2 -2 -3 -3 -3 0.
C String Programs »