C语言程序设计题、实现两个字符串的连接、

2024-11-08 04:31:57
有5个网友回答
网友(1):

C中的字符串都是由一个char指针指向字符串的第一个字符,用'\0'(ASCII码值为0)来表示字符串的结尾
while (*p1!='\0') p1++; //表示p1指针没有到字符串尾时就跳到下一个字符
以上循环结束后p1指针肯定指向字符串的结尾了
然后
while (*p2!='\0'){*p1=*p2,p1++;p2++}//这里是把p2从头到尾复制到p1的位置,由于p1已经指向字符串结尾了,所以相当于连接字符串了

网友(2):

while (*p1!='\0') p1++;//指针移到1字符串末尾
while (*p2!='\0'){*p1=*p2,p1++;p2++}//将2加到1上,自己模拟一下就明白了
*p1='\0';

网友(3):

while (*p1!='\0') p1++;
while (*p2!='\0'){*p1=*p2,p1++;p2++}
*p1='\0';
明显是错的啊,不分配堆内存的情况下,p1指向的字符串的尾部是无法添加新的数据的
在这里p1只是一个指向一片内存的指针,如果要把两个字符串连接需要如下操作:
1、在2个字符串的数据长度未知的情况

int main()
{
char *p1 = "FirstString--";//暂定义为指向固定数据;
char *p2 = "SecondString";//暂定义为指向固定数据;
char *p3;
int iDateLen1,iDateLen2;
iDateLen1 = iDateLen2 = 0;//必须要初始化为0
while (*p1!='\0')
{
p1++;
iDateLen1++; //先获取p1的数据长度
}
while(*p2!='\0')
{
p2++;
iDateLen2++; //获取p2的数据长度
}
p3 = (char*)malloc(sizeof(char)*(iDateLen1+iDateLen2+1));//定义一个p1与p2相连后长度大 小的数据空间
p1=p1-iDateLen1;//p1指向退回到首地址处;
p2=p2-iDateLen2;;//p2指向退回到首地址处;
while(*p1!='\0')
{
*p3++ = *p1++;
}
while(*p2!='\0')
{
*p3++ = *p2++;
}
*(++p3) = '\0';
}

网友(4):

void fun(char *a,char *b)
{
while(*a)a++;
while(*b)*a++=*b++;
*a=0;
}

网友(5):

字符数组来处里吧