memset() メモリのブロックを特定の値で埋めるために使用されます。
memset() 関数の構文は次のとおりです。
// ptr ==>埋められるメモリの開始アドレス // x ==> 埋められる値 // n ==> // 埋められる ptr から始まる埋められるバイト数 void *memset(void *ptr, int x, size_t n );>>
ptr は void ポインターであるため、この関数に任意のタイプのポインターを渡すことができることに注意してください。
memset() 関数がどのように使用されるかを示すために、C での簡単な例を見てみましょう。
dfs アルゴリズム
// 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;> }> |
>
>
出力:
Before memset(): GeeksForGeeks is for programming geeks. After memset(): GeeksForGeeks........programming geeks.>
説明: (str + 13) は、文字列 GeeksForGeeks の最初のスペース (0 ベースのインデックス) を指します。memset() は、文字列の最初の ' ' から指定された文字位置の 8 文字までの文字 '.' を設定します。文字列なので、上記のような出力が得られます。
配列リストJava
// 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; }> |
>
Cプログラム
>
出力:
0 0 0 0 0 0 0 0 0 0>
エクササイズ :
以下のプログラムの出力を予測します。
文字列メソッドJavaへ
// 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; }> |
>
>
memset は文字ごとに動作し、整数には複数のバイト (または文字) が含まれるため、上記のコードは配列値を 10 に設定しないことに注意してください。
文字列をintに変換する方法
ただし、10 を -1 に置き換えると、-1 の値が得られます。 char と int の両方の場合、-1 の表現にはすべて 1 が含まれるためです。