编一程序,将两个字符串连接起来,不要用strcat函数
11个回答
2006-05-13 · 知道合伙人数码行家
关注
展开全部
void *mystrcat(char* s1, char* s2)
{
if (s1==NULL||s2==NULL) return; //错误判断
while(*s1++);
s1--;
while(*s1++ = *s2++); //是一个=(赋值),不是==(比较)
}
以上程序将s2串在s1后面
{
if (s1==NULL||s2==NULL) return; //错误判断
while(*s1++);
s1--;
while(*s1++ = *s2++); //是一个=(赋值),不是==(比较)
}
以上程序将s2串在s1后面
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看到帖子,回一下吧,由于你没有告诉是否需要分配空间,所以我默认就分配一下啦~~
程序没有测试,如果编译不过自己修改下就可以了,应该没有问题~~
#include
<string.h>
int
starcat_test(char
*
star1,
char
*
star2)
{
char
*
cStr;
int
iStrLenSum;
if
(NULL
==
star1
||
NULL
==
star2)
{
return
1;
}
iStrLenSum
=
strlen(star1)
+
strlen(star1);
if
(0
==
iStrLenSum
)
{
return
1;
}
cStr
=
(char
*)malloc(iStrLenSum
+
1);
if
(NULL
==
cStr)
{
return
1;
}
memset(cStr,
0x00,
iStrLenSum);
memcpy(cStr,
star1,
strlen(star1)
);
memcpy(cStr
+
strlen(star1),
star2,
strlen(star2)
);
return
0;
}
程序没有测试,如果编译不过自己修改下就可以了,应该没有问题~~
#include
<string.h>
int
starcat_test(char
*
star1,
char
*
star2)
{
char
*
cStr;
int
iStrLenSum;
if
(NULL
==
star1
||
NULL
==
star2)
{
return
1;
}
iStrLenSum
=
strlen(star1)
+
strlen(star1);
if
(0
==
iStrLenSum
)
{
return
1;
}
cStr
=
(char
*)malloc(iStrLenSum
+
1);
if
(NULL
==
cStr)
{
return
1;
}
memset(cStr,
0x00,
iStrLenSum);
memcpy(cStr,
star1,
strlen(star1)
);
memcpy(cStr
+
strlen(star1),
star2,
strlen(star2)
);
return
0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include
<stdio.h>
int
main()
{
char
s1[80],s2[40];
int
i=0,j=0;
printf("\nInput
the
first
string:");
scanf("%s",s1);
printf("\nInput
the
second
string:");
scanf("%s",s2);
while
(s1[i]
!='\0')
i++;
while
(s2[j]
!='\0')
s1[i++]=s2[j++];
/*
拼接字符到s1
*/
s1[i]
='\0';
printf("\nNew
string:
%s",s1);
}
<stdio.h>
int
main()
{
char
s1[80],s2[40];
int
i=0,j=0;
printf("\nInput
the
first
string:");
scanf("%s",s1);
printf("\nInput
the
second
string:");
scanf("%s",s2);
while
(s1[i]
!='\0')
i++;
while
(s2[j]
!='\0')
s1[i++]=s2[j++];
/*
拼接字符到s1
*/
s1[i]
='\0';
printf("\nNew
string:
%s",s1);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
j++是先用j,然后再加的,第一次相当于
j;
++j;
j为0的时候就是b[0]
j;
++j;
j为0的时候就是b[0]
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public
static
char*
CombineString(char*
source1,
int
length1;
char*
source2,
int
length2)
{
char*
result=0;
result=(char*)malloc(sizeof(length1+length2-1);
if(result==0)
{
return
null;
}
int
position=0;
int
i=0;
while(position<length1)
{
result[position++]=source1[position++];
}
while(i<length2)
{
result[position+i]=source2[i++];
}
result[position+i]='\0';
return
result;
}
static
char*
CombineString(char*
source1,
int
length1;
char*
source2,
int
length2)
{
char*
result=0;
result=(char*)malloc(sizeof(length1+length2-1);
if(result==0)
{
return
null;
}
int
position=0;
int
i=0;
while(position<length1)
{
result[position++]=source1[position++];
}
while(i<length2)
{
result[position+i]=source2[i++];
}
result[position+i]='\0';
return
result;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询