首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C语言兑现字符串的连接。高手指教!

2012-10-23 
C语言实现字符串的连接。。高手指教!!C/C++ code#includestdio.hchar * connect(char *s,char *t){char *q

C语言实现字符串的连接。。高手指教!!

C/C++ code
#include<stdio.h>char * connect(char *s,char *t){    char *q;    for ( ;*s != '\0' ;)    {        *q = *s;        s++;        q++;    }    for ( ;*t != '\0' ;)    {        *q = *t;        t++;        q++;    }    return q;}int main(){    char *str, *t,*p;    str = "one world";    t = "one dream";    printf("the 1st string is :%s\n",str);    printf("the 2nd string is :%s\n",t);    p = connect(str,t);        printf("%s",p);    return 0;}

高手们帮我看看,哪里不对。。。谢谢啊

[解决办法]
#include <stdio.h>
#include <malloc.h>
#include <memory.h>

char * connect(char *s,char *t)
{
char *q = (char *)malloc(sizeof(char)*100);//指针没有分配内存char *p = q;//p指向q的起始位置,并返回起始位置而不是已经变化的qmemset(q,'\0',100);
for ( ;*s != '\0' ;)
{
*q = *s;
s++;
q++;
}

for ( ;*t != '\0' ;)
{
*q = *t;
t++;
q++;
}
return p;
}


int _tmain(int argc, _TCHAR* argv[])
{
char *str, *t,*p;
str = "one world";
t = "one dream";
printf("the 1st string is :%s\n",str);
printf("the 2nd string is :%s\n",t);
p = connect(str,t);

printf("%s",p);

return 0;
}

[解决办法]
一:合并后的长度问题 二:返回的是connect栈中的地址

6楼正解, 在最后要free
[解决办法]
char *q;//q指针未初始化,可能指向内存中任意位置
for ( ;*s != '\0' ;)//将s指向字符串复制到q
for ( ;*t != '\0' ;)//将s指向字符串复制到q
return q;//未设置字符串结束符'\0'

热点排行