字符串超出范围

时间:2013-03-03 00:29:39

标签: overflow

这是原始代码

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次它仍然有效。

1 个答案:

答案 0 :(得分:1)

你的导师是对的。 hello只能容纳6个字符(加上一个空终止符)。因此,尝试将strcat内容写入结尾会导致未定义的行为。