分别用字符数组和字符指针实现函数int strmcat1(char s[], char t[]),该函数能将字符串t复制到字符串s的

2025-03-02 10:00:45
推荐回答(4个)
回答1:

//分别用字符数组和字符指针实现函数int strmcat1(char s[], char t[]),该函数能将字符串t复制到字符串s的末端,并且返回复制后的字符串s的长度。自己定义main()函数,在其中调试strmcat1函数
#include
#include
using namespace std;

//////////method1///////////////
int getLen(char s[])
{
int s_len = 0;
while(1)
{
if(s[s_len] == 0)
break;
s_len++;
}
return s_len;
}
int strmcat1(char s[], char t[])
{

int t_len = getLen(t);
int s_len = getLen(s);

int i = 0;
for( i = 0; i < t_len; ++i)
{
s[s_len+i] = t[i];
}

return s_len+t_len;

}

///////////////method2////////////
int getlen(char* s)
{
assert(s!=0);
int s_len = 0;
while(1)
{
if( *(s+s_len) == 0)
break;
s_len++;
}
return s_len;
}
int strmcat2(char *s, char *t)
{
assert(s);
assert(t);
int t_len = getlen(t);
int s_len = getlen(s);

int i = 0;
for( i = 0; i < t_len; ++i)
{
*(s+s_len+i) = *(t+i);
}

return s_len+t_len;

}

int main()
{
char a[128] = "hello ";
char b[] = "world.";

char m[128] = "how old ";
char n[] = "are you";

cout<<"len is "< cout< cout<<"len is "< cout<return 0;
}

回答2:

#include
#include
int strmcat1(char s[], char t[]);
int main()
{
char str1[50]="01234";char str2[20]="56789";
int l;
l=strmcat1(str1, str2);
printf("长度为:%d\n",l);
printf("合并后为:%s\n",str1);
return 0;
}

int strmcat1(char s[], char t[])
{
int l=0;
char *ptr1 = s;char *ptr2 = t;
while(*ptr1 != '\0'){ptr1++;l++;}
while(*ptr2 != '\0'){*ptr1++ = *ptr2++;l++;}//把字符串str2连接到str1后面
*ptr1='\0';//字符串结束符放在串尾
return l;
}

回答3:

#include
#include

void main()
{
void strmCpy(char s[],char t[],int m);
char s[80],t[80];
int m;
gets(s);
gets(t);
scanf("%d",&m);
strmCpy(s,t,m);
}
void strmCpy(char s[],char t[],int m)
{
int i,j,q=strlen(s),n=strlen(t);
for(i=m-1,j=0;i{
s[j]=t[i];
j++;
}
s[j]='\0';
printf("%s",s);
}

-----------------------------
你都(for j=q;...)了。
说明s[j]已经到了最后一个字符了,还怎么加呀?
而且嵌套的循环,是里面的先循环一遍,就算,你把它改成j=0,那么复制过去不是全是t的最后一个字符吗?
希望对你有帮助

回答4:

#include
#include

void main()
{
void strmCpy(char s[],char t[],int m);
char s[80],t[80];
int m;
gets(s);
gets(t);
scanf("%d",&m);
strmCpy(s,t,m);
}
void strmCpy(char s[],char t[],int m)
{
int i,j,q=strlen(s),n=strlen(t);
for(i=m-1,j=0;i{
s[j]=t[i];
j++;
}
s[j]='\0';
printf("%s",s);
}

-----------------------------
你都(for j=q;...)了。
说明s[j]已经到了最后一个字符了,还怎么加呀?
而且嵌套的循环,是里面的先循环一遍,就算,你把它改成j=0,那么复制过去不是全是t的最后一个字符吗?