A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jingkai 中级黑马   /  2015-5-21 08:36  /  928 人查看  /  5 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

我想实现的是将字符串t拼接到字符串s上,如下程序,编译的时候并没有什么错误,可是运行的时候直接崩溃,最烦这种错误,百爪挠心的感觉,也找不到自己哪里错了,求大家来帮帮忙,献智献策。帮我找找。感激不尽

void strlink (char s[],char t[]);
int main() {

    char s[20] = "jingjing";
    char t[10] = "1234567890";
    strlink(s, t);
    NSLog(@"%s",s);

    return 0;
}

void strlink (char s[],char t[])

{
    unsigned long len1 = strlen(s);
    unsigned long len2 = strlen(t);
    for (int i =0; i<len2; i++,len1++) {
        s[len1] = t;
    }
}



5 个回复

倒序浏览
  s[len1] = t; 循环这里,,你这样会替换掉原来的字符,,连接字符串应该是从尾部开始添加,而不是从头部,
所以 循环哪里,不能从0开始,应该是这样:

for (int i =len1; i<len2+len1; i++) {
        s[len1] = t;
    }
回复 使用道具 举报
最后,  s[len1+len2]='\0';
作为字符串的结尾
回复 使用道具 举报
char    *strcat(char *, const char *); // 字符串拼接函数
拼接字符串为什么不用这个函数?
回复 使用道具 举报
s[len1] = t;  这个地方能通过吗?s[len1] 存的应该是一个字符变量吧,你给他赋值一个t 字符数组,对这里有疑问,也许是我还没学到~~但感觉 应该是 s[len1]=t[i]; 由于现在不能编译,所以不能验证,如有不对,请指点一下
回复 使用道具 举报
sdzwb89 发表于 2015-5-21 09:31
s[len1] = t;  这个地方能通过吗?s[len1] 存的应该是一个字符变量吧,你给他赋值一个t 字符数组,对这里 ...

恩 代码拷贝的时候出错了好像是
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马