logo

memset() i C med eksempler

memset() bruges til at fylde en hukommelsesblok med en bestemt værdi.
Syntaksen for memset()-funktionen er som følger:

 // ptr ==>Startadresse for hukommelse, der skal udfyldes // x ==> Værdi, der skal udfyldes // n ==> Antal bytes, der skal udfyldes, starter // fra ptr, der skal udfyldes void *memset(void *ptr, int x, size_t n );>

Bemærk, at ptr er en void pointer, så vi kan sende enhver form for pointer til denne funktion.



Lad os se et simpelt eksempel i C for at demonstrere, hvordan memset()-funktionen bruges:






nfa til dfa



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

>

>

Produktion:

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

Forklaring: (str + 13) peger på det første mellemrum (0 baseret indeks) i strengen GeeksForGeeks er til programmering af nørder., og memset() sætter tegnet '.' startende fra første ' ' i strengen op til 8 tegnpositioner af den givne streng og derfor får vi output som vist ovenfor.




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

>

gratis ipconfig
>

Produktion:

 0 0 0 0 0 0 0 0 0 0>


Dyrke motion :

Forudsige outputtet af nedenstående program.




hvad er 25 af 100
// 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; }>

>

>

Bemærk, at ovenstående kode ikke indstiller matrixværdier til 10, da memset fungerer tegn for tegn, og et heltal indeholder mere end én byte (eller tegn).

hvad er objekt java

Men hvis vi erstatter 10 med -1, får vi -1 værdier. Fordi repræsentation af -1 indeholder alle 1'ere i tilfælde af både char og int.

Reference: memset man page (linux)