logo

memset() programmā C ar piemēriem

memset () tiek izmantots, lai aizpildītu atmiņas bloku ar noteiktu vērtību.
Funkcijas memset () sintakse ir šāda:

 // ptr ==>Aizpildāmās atmiņas sākuma adrese // x ==> Aizpildāmā vērtība // n ==> Aizpildāmo baitu skaits sākot // no aizpildāmā ptr void *memset(void *ptr, int x, size_t n );>> 

Ņemiet vērā, ka ptr ir tukšs rādītājs, lai mēs varētu nodot jebkura veida rādītāju šai funkcijai.



Apskatīsim vienkāršu piemēru C, lai parādītu, kā tiek izmantota funkcija memset ():








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

operētājsistēmu piemēri

>

Izvade:

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

Paskaidrojums: (str + 13) norāda uz virknes GeeksForGeeks pirmo atstarpi (0 bāzes indekss) ir paredzēts geeks. programmēšanai, un memset() iestata rakstzīmi '.', sākot no virknes pirmās ' ' līdz 8 dotās rakstzīmju pozīcijām virkni, un tādējādi mēs iegūstam izvadi, kā parādīts iepriekš.

saglabāt youtube video vlc




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

>

>

Izvade:

 0 0 0 0 0 0 0 0 0 0>


Vingrinājums:

Prognozējiet tālāk norādītās programmas izvadi.




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

ja vēl ja vēl ja java

>

>

Ņemiet vērā, ka iepriekš minētais kods neiestata masīva vērtības uz 10, jo memset darbojas pēc rakstzīmes un vesels skaitlis satur vairāk nekā vienu baitu (vai rakstzīmes).

Tomēr, ja mēs aizstājam 10 ar -1, mēs iegūstam -1 vērtības. Jo -1 attēlojums satur visus 1 gan char, gan int gadījumā.

Atsauce: memset man lapa (linux)