Рубрики

memset () в C с примерами

memset () используется для заполнения блока памяти определенным значением.
Синтаксис функции memset () следующий:

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

Обратите внимание, что ptr является пустым указателем , поэтому мы можем передать любой тип указателя на эту функцию.

Давайте посмотрим на простой пример в C, чтобы продемонстрировать, как используется функция memset ():

// C программа для демонстрации работы memset ()
#include <stdio.h>
#include <string.h>

  

int main()

{

    char str[50] = "GeeksForGeeks is for programming geeks.";

    printf("\nBefore memset(): %s\n", str);

  

    // Заполняем 8 символов, начиная с str [13], с '.'

    memset(str + 13, '.', 8*sizeof(char));

  

    printf("After memset():  %s", str);

    return 0;

}

Выход:

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

Объяснение: (str + 13) указывает на первый пробел (индекс на основе 0) строки «GeeksForGeeks предназначен для программирования вундеркиндов.», А memset () устанавливает символ «.» начиная с первого '' строки до 8 позиций символов данной строки, и, следовательно, мы получаем вывод, как показано выше.

// C программа для демонстрации работы 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];

  

    // Заполнить весь массив 0.

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

    printf("Array after memset()\n");

    printArray(arr, n);

  

    return 0;

}

Выход:

0 0 0 0 0 0 0 0 0 0


Упражнение:

Прогнозировать вывод программы ниже.

// C программа для демонстрации работы 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];

  

    // Заполнить весь массив 100.

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

    printf("Array after memset()\n");

    printArray(arr, n);

  

    return 0;

}

Обратите внимание, что приведенный выше код не устанавливает значения массива равными 10, поскольку memset работает символ за символом, а целое число содержит более одного байта (или символов).

Однако, если мы заменим 10 на -1, мы получим -1 значения. Потому что представление -1 содержит все 1 в случае как char, так и int.

Ссылка: справочная страница memset (linux)

Эта статья предоставлена МАЖАР ИМАМ ХАН . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

memset () в C с примерами

0.00 (0%) 0 votes