memset() wird verwendet, um einen Speicherblock mit einem bestimmten Wert zu füllen.
Die Syntax der Funktion memset() lautet wie folgt:
// ptr ==>Startadresse des zu füllenden Speichers // x ==> Zu füllender Wert // n ==> Anzahl der zu füllenden Bytes beginnend // ab ptr, die gefüllt werden sollen void *memset(void *ptr, int x, size_t n );>
Beachten Sie, dass ptr ein void-Zeiger ist, sodass wir jede Art von Zeiger an diese Funktion übergeben können.
Sehen wir uns ein einfaches Beispiel in C an, um zu demonstrieren, wie die Funktion memset() verwendet wird:
Java tun, während
// 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;> }> |
>
>
Ausgabe:
Before memset(): GeeksForGeeks is for programming geeks. After memset(): GeeksForGeeks........programming geeks.>
Erläuterung: (str + 13) zeigt auf das erste Leerzeichen (0-basierter Index) der Zeichenfolge GeeksForGeeks ist für Programmierfreaks gedacht, und memset() setzt das Zeichen „.“ beginnend mit dem ersten „“ der Zeichenfolge bis zu 8 Zeichenpositionen des angegebenen string und daher erhalten wir die oben gezeigte Ausgabe.
// 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; }> |
>
>
Ausgabe:
0 0 0 0 0 0 0 0 0 0>
Übung :
Sagen Sie die Ausgabe des folgenden Programms voraus.
// 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; }> |
>
>
Beachten Sie, dass der obige Code die Array-Werte nicht auf 10 setzt, da Memset Zeichen für Zeichen arbeitet und eine Ganzzahl mehr als ein Byte (oder Zeichen) enthält.
Wenn wir jedoch 10 durch -1 ersetzen, erhalten wir -1-Werte. Weil die Darstellung von -1 sowohl im Fall von char als auch int alle Einsen enthält.
Referenz: Memset-Manpage (Linux)