0

strcat(array、&charVariable)を使用してcharVariableを配列に追加しようとしていますが、配列を表示すると、この╠╠╠╠╠╠╠╠が表示されます。誰かが私を助けることができますか?

4

3 に答える 3

6

問題はstrcat、null で終わる文字シーケンスへのポインターを期待することです。あなたの場合、スタンドアロンchar変数のアドレスを渡しています。char変数の直後のメモリ内の項目がゼロでない場合、未定義の動作 (ガベージ文字の追加またはクラッシュ) が発生します。

正しく行う方法は次のとおりです。

char tmp[2];
tmp[0] = charVariable;
tmp[1] = '\0';
strcat(array, tmp); 
于 2012-11-09T01:33:28.813 に答える
1

strcat最後にヌルバイトがある文字列で使用することを意図しています\0。dasblinkenlight によって提案されたアプローチを試すことができますが、より効率的なアプローチ (array追加の char を追加するのに十分なスペースがあると仮定して、とにかく使用すると仮定する必要がありますstrcat) は次のとおりです。

int len = strlen(array);
array[len] = charVariable;
array[len+1] = '\0';
于 2012-11-09T01:41:11.507 に答える
-2

使用規則strcat():

  1. ターゲット文字列には、ヌル文字 ('\0') ターミネータが既に含まれている必要があります。そうstrcat()しないと、末尾を見つけることができません。

  2. ターゲット文字列は、既に含まれている文字と終端の null 文字に加えて、追加する文字列を保持するのに十分な大きさである必要があります。

  3. ターゲット文字列に追加されるソース文字列には、null ターミネータも必要です。そうstrcat()しないと、末尾を見つけることができません。

補遺

@dasblinkenlight は、それを行う適切な方法を 1 つ提供しています。ここに別のものがあります:

size_t  len;
len = strlen(array);
array[len] = charVariable;
array[len+1] = '\0';
于 2012-11-09T01:37:13.930 に答える