{
if(str3[i]=='\0') ------> 邏輯錯誤啦
str3[i]=str2[j++];
}
找打str3的尾巴'\0' 後,(假設尾巴所在下標為k) j = 0
str3[i]=str2[j++]; 把 str2[0] 復制到str3[k] 然後j++ 變為1,i++變為 k+1
下壹次循環 i是等於 k+1的 但是 str3[k+1] 是原來str3的尾巴str3[k] 後面緊挨著的
他的值無法確定,
雖然str3[40]={0}; 初始化為0
但是 str1[10],卻不是
而且
for(i=0;i<=9;i++)
{
str3[i]=str1[i]; str3[10]之前的來自 str1
}
str1 輸入的不見得就是 剛好九個字符,這樣的話str1的第十個str1[9]會是'\0'
所以 str3[10]之前和'\0'之後 可能有不確定的值
那麽 str3[i]不為'\0' str2[j] 就沒復制過來,但i 還是在加 所以 str2[j] 復制過來但“向後偏了”
for(i=0;i<=39;i++)
{
if(str3[i]=='\0')
break;/*找到'\0'的下標 i 跳出*/
}
for(j = 0 ; str2[j]!='\0' ; )
{
str3[ i ++] = str2[ j++ ];
}
str3[i] = '\0';