看板 C_and_CPP 關於我們 聯絡資訊
謝謝版友的回信說明 bug是因為我沒有清空記憶體裡的值 以下為更改過的程式碼 #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char string1[10], string2[10], string3[10]; char dest_string[30]=""; // 避免記憶體內有殘留的值,所以必須先必須先清空字串 int i, j, str1_length, str2_length; printf("輸入外部字串str1 => "); scanf("%s", &string1); printf("輸入內部字串str2 => "); scanf("%s", &string2); str1_length=strlen(string1); strncpy(dest_string, string1, str1_length/2); strcat(dest_string, string2); for(i=str1_length/2,j=0;;i++,j++) { string3[j]=string1[i]; if(string3[j]=='\0') break; } strcat(dest_string, string3); printf("合併字串(str2插入str1字串中央) => %s\n", dest_string); system("pause"); return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.243.66
ledia:我記得 strncpy 不會補 zero-end, 這個要比較小心 05/07 20:47
stonehomelaa:沒錯 strncpy不會補\0 05/07 21:05