Menu
CoddyTech

使用 strcat()

本课属于 Coddy C 学习旅程的“逻辑与流程”单元。第 17 课,共 63 课。

你已经学会了如何用 strcpy() 复制字符串,但如果你想把两个字符串连接起来呢?这称为拼接,C 提供了来自 <string.h> 库的 strcat() 函数来实现这一功能。

strcat() 函数会将一个字符串的内容追加到另一个字符串的末尾。它接受两个参数:目标字符串(会被修改)和源字符串(会被添加到末尾)。

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

char greeting[20] = "Hello";
char name[] = " World";
strcat(greeting, name);  // greeting 现在包含 "Hello World"

目标字符串必须有足够的空间来容纳原有内容和追加的新内容,这一点至关重要。strcat() 函数会找到目标字符串中的空终止符,将其移除,把源字符串复制到该位置,并在最末尾添加一个新的空终止符。

有时,你需要将一个数字(比如 int)拼接到字符串中。由于 strcat() 只能用于字符数组,你需要先将数字转换为字符串。你可以使用 sprintf() 来完成这件事,它的工作方式与 printf() 类似,但会将格式化后的结果写入字符数组,而不是打印到屏幕上。sprintf() 属于 <stdio.h>,大多数 C 程序都已经包含了它。

int n = 42;
char numStr[20];
sprintf(numStr, "%d", n);  // numStr 现在包含字符串 "42"

将数字以字符串形式存储在 numStr 中后,你就可以像往常一样使用 strcat() 将它追加到另一个字符串中:

char summary[100] = "Total people processed: ";
int n = 3;
char numStr[20];
sprintf(numStr, "%d", n);
strcat(summary, numStr);  // summary 现在包含 "Total people processed: 3"

这个函数对于用较小的片段构建较长的字符串至关重要,例如用单个词语组成完整的句子,或将用户输入与预定义文本组合起来。

challenge icon

挑战

简单

编写一个 C 程序,使用 strcat() 函数拼接字符串,生成个性化消息。你的程序应当:

  1. 读取一个整数 n,表示要处理的人数
  2. 对每个人:
    • 从输入中读取其名字
    • 从输入中读取其姓氏
    • 创建一个名为 fullName、包含 100 个元素的字符数组
    • 使用 strcpy() 将名字复制到 fullName 中
    • 使用 strcat() 将一个空格 " " 追加到 fullName 中
    • 使用 strcat() 将姓氏追加到 fullName 中
    • 创建一个名为 greeting、包含 150 个元素的字符数组
    • 使用 strcpy() 将 "Hello, " 复制到 greeting 中
    • 使用 strcat() 将 fullName 追加到 greeting 中
    • 使用 strcat() 将 "! Welcome to our program." 追加到 greeting 中
    • 打印最终的问候消息
  3. 处理完所有人后,创建一条汇总消息:
    • 创建一个名为 summary、包含 100 个元素的字符数组
    • 使用 strcpy() 将 "Total people processed: " 复制到 summary 中
    • 将数字 n 转换为字符串,并使用 strcat() 将其追加到 summary 中
    • 打印汇总消息

记得包含 <string.h> 头文件,以便使用字符串函数。

你的输出应按以下格式显示结果:

Hello, [FirstName LastName]! Welcome to our program.
Hello, [FirstName LastName]! Welcome to our program.
...
Total people processed: [n]

例如,如果输入为:

2
John
Doe
Alice
Smith

你的输出应为:

Hello, John Doe! Welcome to our program.
Hello, Alice Smith! Welcome to our program.
Total people processed: 2

这个挑战将测试你对使用 strcat() 拼接多个字符串的理解,以及如何结合使用 strcpy() 初始化字符串,并逐步使用多个部分构建复杂字符串。

亲手试试

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

int main() {
    // 读取人数
    int n;
    scanf("%d", &n);
    
    // TODO:在下方编写你的代码
    // 处理每个人的信息并生成问候消息
    // 然后生成并显示汇总消息
    
    return 0;
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: C 在线编译器