memset() s'utilitza per omplir un bloc de memòria amb un valor determinat.
La sintaxi de la funció memset() és la següent:
quin és el cas en sql
// ptr ==>Adreça inicial de la memòria que s'ha d'omplir // x ==> Valor que s'ha d'omplir // n ==> Nombre de bytes que s'han d'omplir a partir // des de ptr que s'ha d'omplir void *memset(void *ptr, int x, size_t n );>>>Tingueu en compte que ptr és un punter void , de manera que podem passar qualsevol tipus de punter a aquesta funció.
Vegem un exemple senzill en C per demostrar com s'utilitza la funció 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;> }> |
>
Sortida:
Before memset(): GeeksForGeeks is for programming geeks. After memset(): GeeksForGeeks........programming geeks.>
Explicació: (str + 13) apunta al primer espai (índex basat en 0) de la cadena GeeksForGeeks és per a geeks de programació., i memset() estableix el caràcter '.' a partir del primer ' ' de la cadena fins a 8 posicions de caràcters cadena i, per tant, obtenim la sortida tal com es mostra a dalt.
// 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; }> |
>
>
paràmetre a l'script de shell
Sortida:
0 0 0 0 0 0 0 0 0 0>
Exercici:
Prediu la sortida del programa següent.
// 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; }> |
cadena java cmp
>
>
Tingueu en compte que el codi anterior no estableix valors de matriu en 10, ja que memset funciona caràcter per caràcter i un nombre enter conté més d'un byte (o caràcters).
Tanmateix, si substituïm 10 per -1, obtenim valors -1. Com que la representació de -1 conté tots els 1 en cas de char i int.
Referència: pàgina man de memset (linux)