C/C++ strcat 用法與範例

本篇 ShengYu 介紹 C/C++ strcat 用法與範例,strcat 是用來連接兩個字串,或相加兩個字串的函式,以下介紹如何使用 strcat 函式。

C/C++ 要連接 c-style 字串可以使用 strcat 來完成,要使用 strcat 的話需要引入的標頭檔 <string.h>,如果要使用 C++ 的標頭檔則是引入 <cstring>
strcat 函式原型為

1
char * strcat(char * destination, const char * source);

strcat() 會將 source 字串連接在 destination 字串後,來看看下面的 strcat 用法範例吧!

如下範例,宣告一個 dest 後,用 memset() 初始化 dest 後,使用 strcat 將 str1 字串連接在 dest 字串後,之後再連接一個空格,最後再連接 str2,

cpp-strcat.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// g++ cpp-strcat.cpp -o a.out
#include <stdio.h>
#include <string.h>
using namespace std;

int main() {
const char *str1 = "hello";
const char *str2 = "world";
char dest[64];

memset(dest, 0, sizeof(dest));
strcat(dest, str1);
strcat(dest, " ");
strcat(dest, str2);
printf("dest: %s\n", dest);

return 0;
}

結果如下,

1
dest: hello world

新手常見的問題

以下是很多新手常常發生的一些問題,
請問以下範例有沒有問題?

1
2
char *str = "Hello ";
strcat(str, "World");

乍看沒問題,但這問題可大了,原因是 str 是一個指標,指向的 “Hello “ 是 const char *,不是一個字元陣列,

所以要怎麼改?答案如下,就是「分配一個夠大的字串陣列」,以下以 128 為例,而且同時要記得這個字元陣列要能夠塞得下你總共的字串,

1
2
char str[128] = "Hello ";
strcat(str, "World");

也可以將 str 用 malloc() 配置一塊記憶體,再使用 strcat 連接字串,

1
2
3
4
5
char *str = (char *) malloc(sizeof(char) * 32);
strcat(str, "Hello ");
strcat(str, "World");

free(str);

以上就是 C/C++ strcat 的用法與範例介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!

其它參考
strcat - C++ Reference
https://www.cplusplus.com/reference/cstring/strcat/

其它相關文章推薦
如果你想學習 C++ 相關技術,可以參考看看下面的文章,
C/C++ 新手入門教學懶人包
C/C++ 字串連接的3種方法
C/C++ strcmp 用法與範例
C/C++ strtok 用法與範例
C/C++ strstr 用法與範例
C/C++ strcpy 用法與範例