看板 C_and_CPP 關於我們 聯絡資訊
這是書上的練習題 將一個字串插入另一個字串的中央 我執行時插入的中間會跑出一些亂碼 紅色部分的程式碼 請問這邊是什麼問題呢? 是不是有什麼東西沒有考慮到 (看書自修好辛苦啊 QQ) #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); str2_length=strlen(string2); 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
tiyun:被老師教才辛苦 05/07 12:52
shadowjohn:strncpy(dest_string, string1, strlen(string1)); 05/07 13:35
tohru:不好意思 上面的語法好像不是我要的耶 05/07 14:02
frank1983:你是輸入中文嗎?如果是的話因為中文是 multi-byte char 05/07 14:23
frank1983:也就是一個中文字需要多個位元來表示,所以單純將 05/07 14:23
frank1983:string1 切半 (str1_length/2) 是不行的 05/07 14:23
tohru:我輸入是英文 good 還有 orz,結果變成 "go亂碼orzod" 05/07 14:27
tohru:所以才想請問中間的亂碼是什麼造成的 05/07 14:28
YCTai:scanf那邊不需要加&吧 05/07 14:40
YCTai:scanf("%s",string1); 05/07 14:41