當前位置:編程學習大全網 - 編程軟體 - 為什麽我的編程會出現亂碼?程序功能是連接兩個字符串

為什麽我的編程會出現亂碼?程序功能是連接兩個字符串

for(i=0;i<=39;i++)

{

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';

  • 上一篇:C語言編程難題。狐貍吃兔子。請高手幫忙深入分析下。感謝!
  • 下一篇:求 Mind As Judgment這音樂的中文歌詞
  • copyright 2024編程學習大全網