logo

memset() C:ssä esimerkkien kanssa

memset() käytetään täyttämään muistilohko tietyllä arvolla.
Memset()-funktion syntaksi on seuraava:

 // ptr ==>Täytettävän muistin aloitusosoite // x ==> Täytettävä arvo // n ==> Täytettävien tavujen määrä alkaen // täytettävästä ptr:stä void *memset(void *ptr, int x, size_t n );>> 

Huomaa, että ptr on tyhjä osoitin, joten voimme välittää minkä tahansa tyyppisen osoittimen tähän funktioon.



Katsotaanpa yksinkertainen esimerkki C:ssä havainnollistamaan, kuinka memset()-funktiota käytetään:








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

>

konekirjoitus foreach silmukka

Lähtö:

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

Selitys: (str + 13) osoittaa merkkijonon ensimmäiseen välilyöntiin (0-pohjainen indeksi). merkkijono ja siten saamme tulosteen yllä olevan kuvan mukaisesti.




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

>

pääsiäismunat androidissa

>

Lähtö:

 0 0 0 0 0 0 0 0 0 0>


Harjoittele :

Ennusta alla olevan ohjelman tulos.




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

merkkijonojen ketjutus java

>

>

Huomaa, että yllä oleva koodi ei aseta taulukon arvoiksi 10, koska memset toimii merkki kerrallaan ja kokonaisluku sisältää enemmän kuin yhden tavun (tai merkin).

Jos kuitenkin korvaamme 10 arvolla -1, saamme arvot -1. Koska -1:n esitys sisältää kaikki 1:t sekä char:n että int:n tapauksessa.

Viite: memset-man sivu (linux)