C语言兑现字符串的连接。高手指教!
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'