www.5615.net > strCAt函数mAlloC

strCAt函数mAlloC

dest="can i"; 这句有问题."can i"是一个常量字符串,是只读的.你把dest指向它,就是dest指针指向的存储空间是不可写的.你可以考虑用循环赋值、strcpy或者memcpy来给dest附初值.另,malloc的空间强烈建议先memset再用再看看别人怎么说的.

#include #include int main() { char str1[] = "123456"; char str2[] = "abcdefg"; char *pstr = NULL; pstr = (char*)malloc(strlen(str1) + (strlen(str2)) + 1); strcpy(pstr, str1); strcpy((pstr + strlen(str1)), str2); printf("%s",pstr); return 0; }

错在 queue[i]="Yong";改为:strcpy(queue[i],"Yong");就可以了.其它没问题.

只要把main函数里面的strResult给free掉就行了,因为它和str3是等价的

新申请一个存储空间,或者大数组将第一个串拷贝到数组中,再拷贝第二个,最后填个'\0'作为结束符

因为tmp是局部变量,离开mystrcat函数后就被清除了

strcat函数第一个参数是字符串数组首地址,不能只是个指针(指向的内容可以修改).*s1=“abc”;s1只一个指针,指向的内容为字符串常量"abc"(无法修改); s1[] = "abc";s1是数组首地址,虽然也是一个指针但是有存储空间的数组.两个是不一样的.strcat是拼接字符串用的,要求s1[]的空间足够的大,你直接使用strcat(s1,s2);是很危险的.

#include #include char * my_strca(char *dst, const char * src){ char *dst_t; dst_t = (char *)malloc(sizeof(dst) + sizeof(src)); char *start = dst_t; assert(dst && src); while(*dst_t = *dst) { dst_t++; dst++; } while(*dst_t = *src) { dst_t++; src++; } *dst_t = '\0'; return start;}

malloc是个动态存储分配的函数,返回值是分配单元的地址 (char *)malloc(sizeof(char)*(strlen(str)+1)); 这句前面的(char *)是强制类型转换为基类型为char的指针,后面的(sizeof(char)*(strlen(str)+1)中sizeof(char)是求char类型所占

网站地图

All rights reserved Powered by www.5615.net

copyright ©right 2010-2021。
www.5615.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com