Memset in с linux

How Memset Function is Used

In C, the memset() function is used to set a one-byte value to a memory block byte by byte. This function is useful for initialization of a memory block byte by byte by a particular value. In this article, we will see in detail how this function can be used. So, let’s get started.

Header File:

Syntax:

This function sets the first n bytes of the memory block pointed by str by ch.

Arguments:

The function takes 3 arguments:

  1. str: This is the pointer of the memory location where the memory will be set. This is a void pointer, so we can set any type of memory block, but the memory will be set byte by byte.
  2. ch: This is the value that is to be copied to the memory block. This is an integer value, but it is converted to an unsigned character before copied.
  3. n: This is the number of bytes in the memory block which is set.

Return values:

memset() returns the first address of the memory block from where it starts to set the value.

Examples:

//Example1.c
#include
#include

int main ( )
<
char str [ 30 ] = «ABCD EFGH» ;

printf ( «Before memset => %s» , str ) ;

printf ( » \n After memset => %s \n » , str ) ;


In Example1.c, we have declared one character array of size 30. Then we have initialized it with the string “ABCD EFGH.” In the memset function, we have passed 3 arguments str, ‘x’ and 3. So, the memory block pointed by str will be reset the first 3 characters by ‘x.’ After memset, when we print the memory, we will get “xxxD EFGH.”

//Example2.c
#include
#include

int main ( )
<
char str [ 30 ] = «ABCD EFGH» ;

printf ( «Before memset => %s» , str ) ;

printf ( » \n After memset => %s \n » , str ) ;


In Example2.c, we have passed str+4 to memset function. So, it reset the memory after the 4th location of str. After memset, when we print the memory, we will get “ABCDxxxGH.”

Читайте также:  Linux mint nvidia on demand

// Example3.c
#include
#include

int main ( )
<
int arr [ 5 ] , i ;

memset ( arr , 10 , 5 * sizeof ( arr [ 0 ] ) ) ;

for ( i = 0 ; i 5 ; i ++ )
printf ( «%d \t » , arr [ i ] ) ;


In Example3.c, we have declared an integer array of size 5 and trying to initialize it by 10. But from the output, we have seen that the array is not initialized by 10; instead, we have got the value “168430090”. This is because the integer value is greater than one byte and the memset function converts the value to an unsigned character before copied. Now, we will see how we will get the value “168430090”.


The binary representation of 10 is 00000000 00000000 00000000 00001010.

When integer converted to unsigned char, the lower 1 byte is considered. So, when 10 is converted to unsigned char, it’s a binary representation is 00001010.

memset() function sets the memory location byte by byte. So, a total of 4 bytes will be: 00001010 00001010 00001010 00001010.

The decimal value of the binary representation of 4 bytes is 168430090.

// Example4.c
#include
#include

int main ( )
<
int arr [ 5 ] , i ;

memset ( arr , 0 , 5 * sizeof ( arr [ 0 ] ) ) ;

for ( i = 0 ; i 5 ; i ++ )
printf ( «%d \t » , arr [ i ] ) ;


In Example4.c, we have initialized the integer array by 0. All bits of the binary representation of 0 is 0. So the array is initialized by 0.

// Example5.c
#include
#include

int main ( )
<
int arr [ 5 ] , i ;

memset ( arr ,- 1 , 5 * sizeof ( arr [ 0 ] ) ) ;

for ( i = 0 ; i 5 ; i ++ )
printf ( «%d \t » , arr [ i ] ) ;


In Example5.c, we have initialized the integer array by 0. All bits of the binary representation of -1 is 1. So the array is initialized by -1.

Conclusion:

In this article, we have seen using the memset function how we can initialize or set the value of a memory block efficiently. We can set any character and 0 or -1 as an integer value to a memory block. Memset function is faster to set a large chunk of contiguous memory in comparison with simply setting the location using a loop.

Источник

12.2.1. Заполнение памяти: memset()

12.2.1. Заполнение памяти: memset()

Функция memset() копирует значение val (интерпретируемое как unsigned char) в первые count байтов буфера buf. Она особенно полезна для обнуления блоков динамической памяти:

Читайте также:  Как самой заправить картридж принтера hp deskjet 2320

void *p = malloc(count);

memset(p, 0, count);

Однако memset() может использоваться с любой разновидностью памяти, не только с динамической. Возвращаемым значением является первый аргумент: buf.

Читайте также

Заполнение структур

Заполнение структур Структуры заполняются таким образом, чтобы каждый ее элемент имел естественное выравнивание. Например, рассмотрим следующую структуру данных на 32- разрядной машине.struct animal_struct < char dog; /* 1 байт */ unsigned long cat; /* 4 байт */ unsigned short pig; /* 2 байт

Черчение и заполнение фигур

Черчение и заполнение фигур pdf_curvetoЧерчение кривой.Синтаксис:void pdf_curveto(int pdf_document, double x1, double y1, double x2, double y2, double x3, double y3)Чертит кривую Безье от текущей точки до (x3,y3), использую точки (x1,y1) и (x2,y2) как ориентирующие.pdf_linetoЧерчение отрезка.Синтаксис:void pdf_lineto(int pdf_document, double x, double

Заполнение таблицы маршрутизации

Заполнение таблицы маршрутизации Таблица маршрутизации выполняет две задачи. Во-первых, она сообщает системе, на какой из интерфейсов следует передавать информационные пакеты. На первый взгляд может показаться, что если на компьютере установлен лишь один сетевой

Заполнение новой формы

Заполнение новой формы После создания библиотеки форм пользователи могут заполнять новые формы и изменять формы, хранящиеся в библиотеке.В следующем упражнении вы создадите форму и сохраните ее в библиотеке форм SharePoint.Откройте узел SharePoint, на котором находится

Заполнение цветников и клумб растениями

Заполнение цветников и клумб растениями В программе Landscaping and Deck Designer имеется большая библиотека с растениями, с помощью которой можно заполнить созданные клумбы растениями и создать прекрасные цветники.Щелчком кнопки мыши на значке «плюс» рядом с папкой Plants (Растения) в

Fill Stamp (Заполнение россыпью)

Fill Stamp (Заполнение россыпью) Данный фильтр напоминает уже рассмотренный выше эффект Border Stamp (Россыпь по краю). В отличие от последнего, он рассыпает предметы выбранного типа не по краю выделения, а заполняя его. С его помощью можно дополнить картинку теми предметами,

Глава 2 Заполнение справочников и классификаторов

Глава 2 Заполнение справочников и классификаторов В программе ”1С:Бухгалтерия 8” справочник – это хранилище основной базовой информации, на которой строится вся последующая работа. В справочниках хранятся сведения об организациях и контрагентах, о физических лицах

Заполнение личных данных

Заполнение личных данных Итак, вы выбрали шаблон, который более-менее удовлетворяет вашим эстетическим вкусам, щелкнули по нему. И тут же, совершенно неожиданно, перед вашими глазами выскочил вот такой таинственный бланк. Многие неопытные пользователи пиратских

Автоматическое заполнение форм

Автоматическое заполнение форм Привычным атрибутом многих сайтов стала процедура регистрации. Подписка на рассылки новостей, получение нового электронного адреса, покупка программ через Интернет все эти услуги требуют регистрации и заполнения различного вида форм с

Читайте также:  Dota 2 под linux

29.5.3. Заполнение списка

29.5.3. Заполнение списка Если HTML–страницы являются действительно динамическими, следует предусмотреть возможность заполнения списков или таблицы текущими данными, выбранными из существующего файла, вместо того, чтобы жестко кодировать эти данные в сценариях

§ 4.3 Заполнение заголовка книги

§ 4.3 Заполнение заголовка книги Перед тем, как приступить к набору или редактированию текста книги необходимо заполнить описание книги — Description.Это описание нужно, в первую очередь, для корректной работы библиотечного софта, но может быть интересно и читателю.Режим

4.4.8. Автоматическое заполнение форм

4.4.8. Автоматическое заполнение форм Браузер Safari может автоматически заполнять поля электронных форм, заимствуя информацию из вашей личной карточки адресной книги. Более того, вы можете дать указание Safari запоминать все пароли и логины, используемые вами для доступа к

Источник

memset() in C with examples

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

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:

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.


Exercise :

Predict the output of below program.

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.

This article is contributed by MAZHAR IMAM KHAN. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

Источник

Поделиться с друзьями
КомпСовет
Adblock
detector