Menu
CoddyTech

使用 strcpy()

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

你已经学会了如何使用 strlen() 查找字符串的长度,但如果你需要将一个字符串的内容复制到另一个字符串中,该怎么办?在 C 中,你不能像处理普通变量那样使用赋值运算符(=)复制字符串。

原因是字符串属于字符数组,使用 = 处理数组时,你只会复制内存地址,而不会复制实际内容。这时,<string.h> 库中的 strcpy() 函数就必不可少了。

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

char source[] = "Hello";
char destination[20];
strcpy(destination, source);  // 将 "Hello" 复制到 destination 中

strcpy() 函数接受两个参数:目标数组(你想要复制到的位置)和源字符串(你想要复制的内容)。它会将源字符串中的每个字符复制到目标数组中,包括空终止符。

目标数组必须足够大,才能容纳整个源字符串和空终止符。如果目标数组太小,strcpy() 就会写出数组边界,导致未定义行为。

这个函数是 C 中字符串操作的基础,可用于复制字符串、用现有内容初始化字符串变量,以及为后续处理准备字符串。

challenge icon

挑战

简单

编写一个 C 程序,使用 strcpy() 函数演示字符串复制。程序应当:

  1. 读取一个整数 n,表示要执行的字符串操作次数
  2. 对于每次操作:
    • 从输入中读取一个源字符串
    • 声明一个名为 destination、包含 100 个元素的字符数组
    • 使用 strcpy() 将源字符串复制到目标数组中
    • 打印原始源字符串和复制后的目标字符串
  3. 完成所有操作后,通过以下方式演示复制后的字符串彼此独立:
    • 将最后一个目标数组的第一个字符修改为 'X'
    • 打印修改后的目标字符串,展示它已发生变化

记得包含 <string.h> 头文件,以便使用 strcpy() 函数。

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

Source: [source_string]
Destination: [copied_string]
Source: [source_string]
Destination: [copied_string]
...
Modified last destination: [modified_string]

例如,如果输入是:

3
hello
world
programming

输出应为:

Source: hello
Destination: hello
Source: world
Destination: world
Source: programming
Destination: programming
Modified last destination: Xrogramming

这个挑战将测试你对使用 strcpy() 将字符串内容从一个字符数组复制到另一个字符数组的理解、为目标数组正确分配内存的能力,并演示复制后的字符串独立于其源字符串。

亲手试试

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

int main() {
    int n;
    scanf("%d", &n);
    
    char source[100];
    char destination[100];
    
    // TODO: 在这里编写你的代码
    // 用循环处理 n 次字符串操作
    // 每次操作:
    // 读取 source 字符串
    // 使用 strcpy() 将 source 复制到 destination
    // 按要求的格式输出两个字符串
    
    // TODO: 循环结束后,修改最后一个 destination 的首字符
    // 并输出修改后的字符串
    
    return 0;
}
quiz icon自我测试

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

逻辑与流程中的所有课

自己练习: C 在线编译器