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 个字符(加上一个空终止符)。因此,尝试将strcat某些内容写入它会超出结尾,从而导致未定义的行为。

于 2013-03-03T00:31:38.817 回答