1 題目
函數:connect()
功能:使用指針連接兩個字符串
描述:
實現兩個已知字符串的連接,放到另外一個字符串數組中,然后將連接好的字符串進行打印顯示
2 思路
使用字符型指針變量和指向字符串的指針做函數的參數來實現字符串的連接
注意初始化 char *conn來存儲新字符串的時候,必須先分配存儲空間
char *conn = (char *)malloc(strlen(str1)+strlen(str2)+1);
memset(conn, strlen(str1)+strlen(str2)+1, 0); // 可選,初始化填充內存空間
另外,使用指針的特性,使得 conn 不斷被賦值, str1 和 str2 指向的存儲地址,達到字符串的連接
3 代碼
#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 = "計算廣告生態(tài)";
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);
}
示例結果:
$ gcc ex017.c -o demo
$ ./demo
第一個字符串:技術分享園子
第二個字符串:計算廣告生態(tài)
連接后的字符串是:
技術分享園子,計算廣告生態(tài)