题目

编写函数实现将源字符串复制到目标字符数组中(不调用标准库函数 strcpy)。

输入格式:一行输入一个待复制的源字符串。

输出格式:输出复制后的目标字符串内容,末尾换行。

数据范围与约定:源字符串长度不超过 500,目标数组容量充足。

思路与算法

1. 经典指针拷贝语法
经典的 C 语言写法:while ((*dst++ = *src++) != '\0');。先将源指针指向的字符赋值给目标指针,再同步自增指针,直到赋的值为 '\0' 时表达式为假跳出循环。

2. 缓冲区安全
必须确保目标数组有足够的存储空间容纳源字符串及末尾的结束符 '\0',避免越界写入。

完整程序

#include <stdio.h>

// 实现 strcpy 经典写法:
// 先将 *src 赋值给 *dst,赋值表达式的值为被赋的字符;
// 当复制到 '\0' 时,表达式值为 0 触发循环终止,同时 '\0' 也已被成功拷入目标地址
static void my_copy(char *dst, const char *src)
{
    while ((*dst++ = *src++)) {
    }
}

int main(void)
{
    char src[500], dst[500];
    if (scanf("%499s", src) != 1) {
        return 1;
    }
    my_copy(dst, src);
    printf("%s\n", dst);
    return 0;
}

运行示例

输入:

world

输出:

world