8

私は文字列を使用します:

char    word[100];

0 から始まる各位置にいくつかの文字を追加します。ただし、0 から始まる新しい文字の追加を開始できるように、これらの位置をすべてクリアできる必要があります。

そうしないと、2番目の文字列が短くなると、最初の文字列を上書きしないため、2番目の文字列を追加するときに最初の文字列から余分な文字ができてしまいます。

4

4 に答える 4

20

配列全体をゼロにしたい場合は、次のことができます。

memset(word, 0, sizeof(word));
于 2009-11-14T23:06:27.703 に答える
12

C スタイルのゼロ終了文字列を使用している場合は、それらをクリアする必要はありません。文字列の最後の文字の後の要素を NUL ('\0') に設定するだけで済みます。

例えば、

char buffer[30] = { 'H', 'i', ' ', 'T', 'h', 'e', 'r', 'e', 0 };
// または、同様に:
// char buffer[30] = "こんにちは"; // ここではどちらの例も機能します。

printf("%s", バッファ);
バッファ[2] = '\0';
printf("%s", バッファ)

出力します

こんにちは
こんにちは

それはまだ真実ですがbuffer[3] == 'T'

于 2009-11-14T23:06:18.157 に答える
4

strcpy(word,"")この目的にも使用できます。

于 2014-03-28T07:13:30.280 に答える
1

char配列の最初の位置に null ターミネータを割り当てることができます。

*word = '\0';
于 2009-11-14T23:06:34.007 に答える