用C语言自己写strcat遇到的问题
目标是用for循环来写,自己写了一段,不知道错误在哪,其中StringLen()已经成功实现了,得到了字符串的长度。编译通过,不知道实际错误在哪?char* StringCat(char* s1,char* s2)
{
int Len1 = StringLen(s1);
int Len2 = StringLen(s2);
char* s = (char*)malloc(sizeof(char)*(Len1+Len2+1));
int i;
for(i=0;i<Len1;i++)
{
*(s+i) = *(s1+i);
}
int j;
for(j=0;j<Len2;j++)
{
*(s+Len1+j) = *(s2+j);
}
*(s+Len1+Len2) = '\0';
*s1 = *s;
free(s);
return s1;
}
不知道这样可不可以:big
#include <iostream>
using namespace std;
char* StringCat(char* s1,char* s2)
{
int Len1 = strlen(s1);//StringLen(s1)
int Len2 = strlen(s2);//StringLen(s2)
for(int i=0;i<Len2;i++)
{
s1=s2;
}
return s1;
}
int main()
{
char s1="c/",s2[]="c++";
char* s3=StringCat(s1,s2);
cout<<s3<<endl;
return 0;
} 农夫三拳的代码可以执行,但是我的问题是 : 我的代码错误在哪里,请指出来,谢谢 27149_智者天下 发表于 2014-7-12 13:47
农夫三拳的代码可以执行,但是我的问题是 : 我的代码错误在哪里,请指出来,谢谢
*s1 = *s; 错误, 长度不一样 这样赋值 *s1还是相当于*s1 我覺得你可以再寫一個strtok 以及替代字串跟替代字元的函數看看
比如說一個字串"skfjwnwfkmgwlg||||fkkrkjgl" 把 "||||" 替代成其他的字串, 這個難度有點高嘗試看看
*s1 = *s;
楼主太想当然了,这是初学者容易出现的问题,这个地方应该用strcpy函数,楼主可以自己也去实现一个
还有就是这个函数的s1所指的字符串空间需要足够长,否则容易越界,
越界判断在字符串操作的时候需要考虑 #include <stdio.h>
int main()
{
char s1="123",s2[]="abc";
*s1 = *s2;
printf("%s\n",s1);
return 0;
}
*s1 = *s2;
相当于 s1 = s2;
因为s1是char* 类型,
所以 *s1 只能取到一个char的内存,就是s1所指向的字符串的第一元素
- -我以为你是问怎么写.....
页:
[1]