1

「char array_of_strings[100][100];」を入力するループがあります。ある時点で、これまでに追加されたすべての文字列からそれを削除し、位置 0 から追加を開始できるようにしたいと考えています。C で削除/削除するにはどうすればよいですか?

ありがとう

4

4 に答える 4

7

関数 memsetを使用して、すべての文字をゼロに戻すことができます。

PS 2 次元配列を使用することは、文字列を扱うのにかなり型破りです。個々の文字列の動的割り当てに移行してみてください。

于 2009-10-03T19:21:30.120 に答える
3

そのデータ構造には、実際には固有の構造はありません。基本的に、何も入っていないふりをしてリセットします。

入力した文字列を示すカウンターがありますよね? ゼロに設定します。終わり。

于 2009-10-03T19:20:06.113 に答える
2
memset(array_of_strings, 0, sizeof(array_of_strings));

これは、そこにサイズのマジック ナンバーを配置するよりもクリーンであり、誰かが文字列配列のサイズを変更したときに道を崩す可能性が低くなります。コンパイル時に sizeof を使用して配列のサイズを知っているので、機能します。

memset によく似た bzero を使用することもできますが、ゼロ設定のみに使用できます。一部のプラットフォームでは、bzero は memset よりも高速な場合がありますが、正直なところ、両方の関数が非常に高速であるため、ここで髪を分割するのはばかげています。

bzero(array_of_strings, sizeof(array_of_strings));

bzero には #include が必要 memset には #include が必要

memset のマニュアルページはこちら

bzero のマニュアルページはこちら

于 2009-10-03T19:38:38.170 に答える
2

実際に配列を文字列として使用していると仮定すると、次のようなものが機能するはずです。

int i;
for (i=0; i<100; i++)
   array_of_strings[i][0] = 0;

もちろん、データを文字列として扱っていない場合は、memset のようなものを調べる必要があるかもしれません。

于 2009-10-03T19:23:48.117 に答える