logo

memset() in C con esempi

memset() viene utilizzato per riempire un blocco di memoria con un valore particolare.
La sintassi della funzione memset() è la seguente:

stringa separata in Java
 // ptr ==>Indirizzo iniziale della memoria da riempire // x ==> Valore da riempire // n ==> Numero di byte da riempire a partire // da ptr da riempire void *memset(void *ptr, int x, size_t n );>

Nota che ptr è un puntatore void, quindi possiamo passare qualsiasi tipo di puntatore a questa funzione.



Vediamo un semplice esempio in C per dimostrare come viene utilizzata la funzione 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;> }>

stringhe concat Java
>

>

Produzione:

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

Spiegazione: (str + 13) punta al primo spazio (indice basato su 0) della stringa GeeksForGeeks è per i geek della programmazione e memset() imposta il carattere '.' a partire dal primo ' ' della stringa fino a 8 posizioni di carattere del dato string e quindi otteniamo l'output come mostrato sopra.




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

>

convertire la stringa in carattere
>

Produzione:

algoritmo di Bellford
 0 0 0 0 0 0 0 0 0 0>


Esercizio :

Prevedere l'output del programma seguente.




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

>

albero di ricerca binario vs albero binario
>

Tieni presente che il codice precedente non imposta i valori dell'array su 10 poiché memset funziona carattere per carattere e un numero intero contiene più di un byte (o caratteri).

Tuttavia, se sostituiamo 10 con -1, otteniamo valori -1. Poiché la rappresentazione di -1 contiene tutti gli 1 in caso sia di char che di int.

Riferimento: Pagina man di memset (linux)