文字配列のクリア c

配列をどのように表示するかによって異なります。配列を一連の文字として表示している場合、データをクリアする唯一の方法は、すべてのエントリに触れることです。 memset これを達成するには、おそらく最も効果的な方法です。

一方、これを C/C++ ヌル終了文字列として表示することを選択している場合は、最初のバイトを 0 に設定すると、文字列が効果的にクリアされます。


C の配列は単なるメモリ ロケーションなので、実際には my_custom_data[0] = '\0'; 代入は単に最初の要素をゼロに設定し、他の要素はそのまま残します。

配列のすべての要素をクリアしたい場合は、各要素にアクセスする必要があります。それが memset です

memset(&arr[0], 0, sizeof(arr));

これは、一般的にこれを処理する最速の方法です。 C++ を使用できる場合は、代わりに std::fill を検討してください:

char *begin = &arr;
char *end = begin + sizeof(arr);
std::fill(begin, end, 0);

1 つの要素を設定すると、配列全体がクリアされるとなぜ思いますか? 特に C では、プログラマーが明示的にプログラミングしない限り、ほとんど何も起こりません。最初の要素をゼロ (または任意の値) に設定した場合、まさにそれを行ったことになり、それ以上のことは何もありません。

初期化するとき、配列をゼロに設定できます:

char mcd[40] = {0}; /* sets the whole array */

そうでなければ、memset やそれに類するもの以外のテクニックを知りません。