在线等一个C++编程
发布网友
发布时间:2023-09-10 18:20
我来回答
共4个回答
热心网友
时间:2024-12-05 04:22
int Strcat(char *s1,char *s2)
{
int l1,l2;
l1=l2=0;
while(s1[l1]!='\0') l1++;
do{s1[l1++]=s2[l2++];}while(s2[l2]!='\0');
return l1;
}
当然,这个函数是有隐患的,因为它没有为s1分配用来放置s2值的空间.
不过库函数strcat本身好像也没有这么做.
热心网友
时间:2024-12-05 04:22
int strcat( char * dst, const char * src )
{
char * cp = dst;
while( *cp )
cp++;
while( *cp++ = *src++ ) ;
return( cp - dst );
}
热心网友
时间:2024-12-05 04:22
int strcat(char *s1, char *s2)
{
if (s1 == NULL) {
return -1;
}
if (s2 == NULL) {
return strlen(s1);
}
char *pCh = s1;
while(*pCh){
pCh++;
}
while (*s2) {
*pCh = *s2;
pCh++;
s2++;
}
*(pCh++) = '\0';
return(pCh - s1 - 1);
}
编程不只是把代码敲出来能执行就行了,请考虑可读性,健壮性和效率这三者之间的平衡。我首推认为其优先关系是:健壮〉可读〉效率。大家抛玉!
热心网友
时间:2024-12-05 04:23
#include <iostream>
using namespace std;
int Length(char * s);
int strcat(char*s1,char*s2);
int main(int argc, char* argv[])
{
char s1[256] = "zhoudequan";
char s2[256]= "guoke204";
cout << strcat(s1,s2);
cout << s1;
//int i = strcat(s1,s2);
return 0;
}
int Length(char * s)
{
int length = 0;
for(int i = 0;s[i] != '\0';i++)
{
length++;
}
return length;
}
int strcat(char * s1,char * s2)
{
int s1Length = Length(s1);
for(int i=0;s2[i] != '\0';i++)
{
s1[s1Length + i] = s2[i];
}
s1Length = Length(s1);
s1[s1Length]='\0';
return s1Length;
}