实现一个用C语言中利用指针将字符串连接函数mystrcat。 题目中已经给出main函数,main函数会调用mystrcat函数进行测试,会输入两个字符串A和Bmystrcat返回连接后的字符串,并且在A和B之间加上一个字符“-”。
时间: 2024-02-28 09:56:23 浏览: 21
好的,下面是mystrcat函数的实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* mystrcat(char* str1, char* str2) {
int len1 = strlen(str1);
int len2 = strlen(str2);
char* result = (char*)malloc(len1 + len2 + 2); // 长度加2,加上连接符'-'和'\0'
if(result == NULL) {
printf("内存分配失败!");
return NULL;
}
char* p = result;
while(*str1 != '\0') {
*p++ = *str1++;
}
*p++ = '-';
while(*str2 != '\0') {
*p++ = *str2++;
}
*p = '\0';
return result;
}
int main() {
char str1[100], str2[100];
printf("请输入字符串A:");
gets(str1);
printf("请输入字符串B:");
gets(str2);
char* result = mystrcat(str1, str2);
printf("连接后的字符串为:%s\n", result);
free(result);
return 0;
}
```
在函数内部,首先需要计算出两个字符串的长度,然后分配一块新的内存来存储连接后的字符串,长度为两个字符串长度之和再加2(因为需要加上连接符'-'和字符串结束符'\0')。
接着,使用指针p指向新分配的内存,然后将字符串A中的字符一个一个复制到p所指向的位置,复制完成后,再将连接符'-'复制到p所指向的位置,最后将字符串B中的字符一个一个复制到p所指向的位置。这样,就完成了字符串的连接。
最后,需要注意,在使用完新分配的内存后,需要调用free函数将其释放。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)