C strcat() 函数

C strcat() 语法

strcat() 是 C 语言 <string.h> 标准库的一个函数,它用于将一个字符串连接到另一个字符串的末尾。

语法:

strcat(dest, src)

说明:

strcat() 函数接收以下 2 个参数。

  • dest(char*):目标字符串的指针。
  • src(const char*):另一个字符串的指针。

strcat(dest, src) 会将 src(包括末尾的空字符 '\0')追加到 dest 的末尾,然后返回指向 dest 的指针。追加后,dest 的原有 '\0' 会被覆盖,src 的 '\0' 会成为新字符串的结束符。

对于 strcat() 函数,小伙伴们需要注意以下 2 点。

  • dest 必须有足够的空间来容纳追加后的字符串,否则会导致缓冲区溢出。
  • src 必须是以 '\0' 结尾的字符串。

提示: strcat 是 “string concatenate” 的缩写。

C strcat() 摘要

使用频率
修改字符串
官方文档 查看

C strcat() 示例

接下来,我们通过几个简单的例子来讲解一下 C strcat() 函数是如何使用的。

示例 1:strcat() 连接两个字符串

#include <stdio.h>
#include <string.h>

int main(void)
{
    char str1[20] = "Go";
    char str2[] = "Python";
    strcat(str1, str2);
    puts(str1);
    puts(str2);
    return 0;
}

运行结果如下。

GoPython
Python

分析:

从结果可以看出来,strcat(str1, str2) 会修改第 1 个字符串,但不会修改第 2 个字符串。

如果你不希望修改原字符串,可以先使用 strcpy() 函数将原字符串复制一份,然后再使用 strcat() 函数进行拼接。

示例 2:使用 strcpy() + strcat()

#include <stdio.h>
#include <string.h>

int main(void)
{
    char str1[] = "Go";
    char str2[] = "Python";
    char result[50];

    // 复制 str1 到 result
    strcpy(result, str1);
    // 拼接 str2 到 result 末尾
    strcat(result, str2);

    // 打印结果
    puts(str1);
    puts(str2);
    puts(result);

    return 0;
}

运行结果如下。

Go
Python
GoPython

分析:

在这个例子中,我们首先使用 strcpy(result, str1) 来将 str1 复制到 result 中,然后再使用 strcat(result, str2) 将 str2 拼接到 result 的末尾。这样操作下来,就不会修改原字符串 str1 了。

示例 3:strcat() 连接多个字符串

#include <stdio.h>
#include <string.h>

int main(void)
{
    char sentence[100] = "Hi, ";
    const char word2[] = "welcome ";
    const char word3[] = "to ";
    const char word4[] = "lvye!";

    strcat(sentence, word2);
    strcat(sentence, word3);
    strcat(sentence, word4);

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

    return 0;
}

运行结果如下。

Hi, welcome to lvye!

分析:

在这个例子中,我们多次调用 strcat() 来将多个字符串依次连接到一个目标字符串中,从而一步步来构建一个更长的字符串。同样地,这里的目标字符串 sentence 需要被声明为足够大的尺寸才行,这样以便容纳所有连接的字符串。

示例 4:strcat() 连接字符串和字符数组

#include <stdio.h>
#include <string.h>

int main(void)
{
    char greeting[30] = "Hello, ";
    char name[] = "Jack";              // 字符数组

    strcat(greeting, name);

    printf("%s\n", greeting);
    return 0;
}

运行结果如下。

Hello, Jack

分析:

strcat() 不仅可以连接字符串字面量或 const char* 类型的字符串,还可以连接普通的字符数组,只要它们以空字符 '\0' 结束即可。

深入了解 strcat()

我们在使用 strcat() 函数时,最重要的一点是要确保目标字符串 dest 有足够的内存空间来存储连接后的结果。如果空间不足,则会导致缓冲区溢出,这可能引发程序崩溃或安全漏洞。

与 strcpy() 不同,strcat() 不会覆盖目标字符串的全部内容,而是从目标字符串的终止符 '\0' 开始进行追加。

如果我们需要更安全、有最大长度限制的字符串连接,此时可以考虑使用 strncat() 函数。这是因为 strncat() 函数可以指定最多连接多少个字符,以防止缓冲区溢出。

上一篇: strlen()

下一篇: strncat()

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号