logo

memset() C su pavyzdžiais

memset () naudojamas atminties blokui užpildyti tam tikra reikšme.
Funkcijos memset() sintaksė yra tokia:

 // ptr ==>Atminties, kurią reikia užpildyti, pradžios adresas // x ==> Reikšmė, kurią reikia užpildyti );>> 

Atminkite, kad ptr yra tuščioji rodyklė, todėl šiai funkcijai galime perduoti bet kokio tipo rodyklę.



Pažiūrėkime paprastą C pavyzdį, kad parodytume, kaip naudojama memset() funkcija:








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

>

Išvestis:

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

Paaiškinimas: (str + 13) nurodo pirmąją eilutės tarpą (0 pagrįstas indeksu) GeeksForGeeks yra skirtas programuoti geeks., o memset() nustato simbolį „.“ pradedant nuo pirmosios eilutės „ “ iki 8 duotųjų simbolių pozicijų eilutę ir todėl gauname išvestį, kaip parodyta aukščiau.


nepakeičiamas sąrašas



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

kiek metų Kylie Jenner
>

>

Išvestis:

 0 0 0 0 0 0 0 0 0 0>


Pratimas :

Numatykite toliau pateiktos programos išvestį.




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

>

>

Atminkite, kad aukščiau pateiktas kodas nenustato masyvo reikšmių iki 10, nes „memset“ veikia po simbolio, o sveikajame skaičiuje yra daugiau nei vienas baitas (arba simboliai).

Tačiau jei 10 pakeisime -1, gausime -1 reikšmes. Kadangi vaizde -1 yra visi 1 ir char, ir int atveju.

Nuoroda: memset man puslapis (Linux)