跳到主要内容

C 语言字符串连接

在C语言中,字符串是以字符数组的形式存储的。字符串连接是指将两个或多个字符串合并成一个字符串。C语言提供了标准库函数 strcat 来实现字符串连接的功能。本文将详细介绍如何使用 strcat 函数,并通过示例代码和实际案例帮助你理解这一概念。

什么是字符串连接?

字符串连接是将两个或多个字符串按顺序合并成一个字符串的过程。例如,将字符串 "Hello""World" 连接起来,结果将是 "HelloWorld"

在C语言中,字符串是以字符数组的形式存储的,并且以空字符 \0 作为字符串的结束标志。因此,字符串连接时需要注意目标字符串数组的容量是否足够大,以容纳连接后的结果。

使用 strcat 函数连接字符串

C语言标准库中的 strcat 函数用于将一个字符串追加到另一个字符串的末尾。其函数原型如下:

c
char *strcat(char *dest, const char *src);
  • dest:目标字符串,连接后的结果将存储在此字符串中。
  • src:源字符串,将被追加到目标字符串的末尾。

示例代码

以下是一个简单的示例,展示如何使用 strcat 函数连接两个字符串:

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

int main() {
char str1[20] = "Hello";
char str2[] = "World";

strcat(str1, str2);

printf("连接后的字符串: %s\n", str1);

return 0;
}

输出:

连接后的字符串: HelloWorld

代码解释

  1. 我们定义了两个字符数组 str1str2,分别存储字符串 "Hello""World"
  2. 使用 strcat 函数将 str2 追加到 str1 的末尾。
  3. 最后,打印连接后的字符串 str1
注意

在使用 strcat 函数时,必须确保目标字符串 dest 有足够的空间来容纳连接后的结果,否则可能会导致缓冲区溢出,引发不可预知的错误。

实际案例:拼接用户输入

假设我们需要编写一个程序,要求用户输入他们的名字和姓氏,然后将它们连接起来形成一个完整的名字。

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

int main() {
char firstName[50];
char lastName[50];
char fullName[100];

printf("请输入你的名字: ");
scanf("%s", firstName);

printf("请输入你的姓氏: ");
scanf("%s", lastName);

strcpy(fullName, firstName); // 先将名字复制到 fullName
strcat(fullName, " "); // 添加一个空格
strcat(fullName, lastName); // 追加姓氏

printf("你的全名是: %s\n", fullName);

return 0;
}

输入:

请输入你的名字: John
请输入你的姓氏: Doe

输出:

你的全名是: John Doe

代码解释

  1. 我们定义了三个字符数组:firstNamelastNamefullName
  2. 使用 scanf 函数获取用户输入的名字和姓氏。
  3. 使用 strcpy 函数将名字复制到 fullName 中。
  4. 使用 strcat 函数在 fullName 中添加一个空格,然后追加姓氏。
  5. 最后,打印完整的名字。
提示

在实际应用中,为了避免缓冲区溢出,建议使用 strncat 函数,它可以指定追加的最大字符数。

总结

字符串连接是C语言中常见的操作之一,strcat 函数是实现这一功能的标准方法。通过本文的学习,你应该已经掌握了如何使用 strcat 函数连接字符串,并理解了在实际应用中需要注意的事项。

附加资源与练习

  • 练习1:编写一个程序,要求用户输入三个单词,然后将它们连接成一个句子并输出。
  • 练习2:修改上述程序,使用 strncat 函数来限制追加的字符数,确保不会发生缓冲区溢出。
  • 进一步学习:了解C语言中其他字符串操作函数,如 strcpystrcmpstrlen

通过不断练习和探索,你将更加熟练地掌握C语言中的字符串操作。