2013-03-03 34 views
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次,它仍然有效。

+3

如果我是你的老師,我會標記你爲了在同一行上聲明多個不同類型的變量。 – 2013-03-03 00:30:41

+0

hello [] =「hello」與聲明hello [7] =「hello」相同。在strcat中,你要走出界限 – 999k 2013-03-03 00:32:38

+0

不是我的代碼,只是改變了它。 – user2054534 2013-03-03 00:33:30

回答

1

你的導師是正確的。 hello只能容納6個字符(加上一個空終止符)。所以試圖strcat東西寫入過去的最後,導致未定義的行爲。

+0

我c,好的,謝謝 – user2054534 2013-03-03 00:32:35