作者tohru (PPP)
看板C_and_CPP
標題[問題] 字串插入字串的問題
時間Thu May 7 12:05:59 2009
這是書上的練習題
將一個字串插入另一個字串的中央
我執行時插入的中間會跑出一些亂碼
紅色部分的程式碼
請問這邊是什麼問題呢?
是不是有什麼東西沒有考慮到
(看書自修好辛苦啊 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