使用指针连接两个字符串

## 1 题目

> 函数:connect()

>

> 功能:使用指针连接两个字符串

>

> 描述:

>

> 实现两个已知字符串的连接,放到另外一个字符串数组中,然后将连接好的字符串进行打印显示

[](https://cf.meitu.com/confluence/pages/viewpage.action?pageId=200425344)

## 2 思路

使用**字符型指针变量**和**指向字符串的指针**做函数的参数来实现字符串的连接

注意初始化 char *conn来存储新字符串的时候,必须先分配存储空间

```c

char *conn = (char *)malloc(strlen(str1)+strlen(str2)+1);

memset(conn, strlen(str1)+strlen(str2)+1, 0); // 可选,初始化填充内存空间

```

另外,使用指针的特性,使得 conn 不断被赋值, str1 和 str2 指向的存储地址,达到字符串的连接

## 3 代码

```c

#include

#include

#include

/**

函数:connect()

功能:使用指针连接两个字符串

描述:

实现两个已知字符串的连接,放到另外一个字符串数组中,然后将连接好的字符串进行打印显示

**/

void connect(char *str1, char *str2, char *conn) {

while(*str1 != '\0') {

*conn = *str1;

conn++;

str1++;

}

*conn = ','; // 两个字符串直接添加逗号

conn++;

while(*str2 != '\0') {

*conn = *str2;

conn++;

str2++;

}

*conn = '\0';

}

int main(int argc, char const *argv[]) {

char *str1 = "技术分享园子";

char *str2 = "计算广告生态";

char *conn = (char *)malloc(strlen(str1)+strlen(str2)+1);  // 为 conn 分配空间,否则是无效地址

memset(conn, strlen(str1)+strlen(str2)+1, 0);              // 初始化 conn 指向的存储地址

printf("第一个字符串:%s\n", str1);

printf("第二个字符串:%s\n", str2);

connect(str1, str2, conn);

printf("连接后的字符串是:\n");

printf("%s\n", conn);

}

```

示例结果:

```shell

$ gcc ex017.c -o demo

$ ./demo

第一个字符串:技术分享园子

第二个字符串:计算广告生态

连接后的字符串是:

技术分享园子,计算广告生态

```

你可能感兴趣的:(使用指针连接两个字符串)