logo

memset() у C із прикладами

memset() використовується для заповнення блоку пам'яті певним значенням.
Синтаксис функції memset() такий:

 // ptr ==>Початкова адреса пам’яті для заповнення // x ==> Значення для заповнення // n ==> Кількість байтів для заповнення, починаючи // від ptr для заповнення void *memset(void *ptr, int x, size_t n );>

Зауважте, що ptr є вказівником на пусті, тому ми можемо передати цій функції будь-який тип вказівника.

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




програма двовимірного масиву на c



// C program to demonstrate working of memset()> #include> #include> > int> main()> {> >char> str[50] =>'GeeksForGeeks is for programming geeks.'>;> >printf>(>' Before memset(): %s '>, str);> > >// Fill 8 characters starting from str[13] with '.'> >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 program to demonstrate working of memset()> #include> #include> > void> printArray(>int> arr[],>int> n)> {> >for> (>int> i=0; 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() '); printArray(arr, n); return 0; }>

>

змінна глобальний javascript
>

Вихід:

 0 0 0 0 0 0 0 0 0 0>


Вправа:

Спрогнозуйте результат наведеної нижче програми.


проектування бази даних в dbms



// C program to demonstrate working of memset()> #include> #include> > void> printArray(>int> arr[],>int> n)> {> >for> (>int> i=0; 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() '); printArray(arr, n); return 0; }>

>

>

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

Однак якщо ми замінимо 10 на -1, ми отримаємо значення -1. Оскільки подання -1 містить усі 1 у випадку як char, так і int.

Посилання: сторінка довідки memset (linux)

cast sql