0%

C13 | 使用指针连接两个字符串

读前福利:几百本互联网技术书籍送给大家https://mp.weixin.qq.com/s/dFqVQ2qJxvQ0YrIlPISJuw


1 题目

函数:connect()

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

描述:

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

2 思路

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

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

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

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

3 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <stdio.h> 
#include <string.h>
#include <stdlib.h>

/**
函数: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);
}

示例结果:

1
2
3
4
5
6
$ gcc ex017.c -o demo
$ ./demo
第一个字符串:技术分享园子
第二个字符串:计算广告生态
连接后的字符串是:
技术分享园子,计算广告生态

最后

在这里给大家准备了几百本的互联网技术类书籍,需要的来下载吧!点击获取
有任何问题,欢迎随时交流!!!

------ 全文结束------