作者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
1F:→ tiyun:被老师教才辛苦 05/07 12:52
2F:推 shadowjohn:strncpy(dest_string, string1, strlen(string1)); 05/07 13:35
3F:→ tohru:不好意思 上面的语法好像不是我要的耶 05/07 14:02
4F:→ frank1983:你是输入中文吗?如果是的话因为中文是 multi-byte char 05/07 14:23
5F:→ frank1983:也就是一个中文字需要多个位元来表示,所以单纯将 05/07 14:23
6F:→ frank1983:string1 切半 (str1_length/2) 是不行的 05/07 14:23
7F:→ tohru:我输入是英文 good 还有 orz,结果变成 "go乱码orzod" 05/07 14:27
8F:→ tohru:所以才想请问中间的乱码是什麽造成的 05/07 14:28
9F:推 YCTai:scanf那边不需要加&吧 05/07 14:40
10F:→ YCTai:scanf("%s",string1); 05/07 14:41