2

これが元のコードでした

int main(void)
{
char hello[] = "hello ", world[] = "world!\n", *s;
s = strcat(hello,world);
printf(s);
return 0;
}




char hello[] = "hello ", world[] = "world!\n", *s;
strcat(hello,world);
printf(hello);

私はそれを以下のものに変更しました

私はそのコードを修正したと確信していますが、インストラクターが私をマークしました。私が彼に言ったように、それはポインターさえ使用しないので、これで問題ありません。彼はそれが正しいとは思わないと言った

私が間違っている?50回実行したように、まだ機能しています。

4

1 に答える 1

1

あなたのインストラクターは正しいです。 helloは 6 文字 (および null ターミネータ) を保持するのに十分な大きさです。そのため、何かを書き込もうとするとstrcat、最後を過ぎて書き込み、未定義の動作が発生します。

于 2013-03-03T00:31:38.817 に答える