题目

实现字符串拷贝(不用 strcpy)

思路

本题自己实现字符串拷贝,不能调用 strcpy

用两个指针或下标,把源串每个字符复制到目标串,并在末尾补上 ''。目标缓冲区必须足够大,且源与目标重叠时行为未定义,不要重叠。

解题分析

拷贝包含结尾 \0,目标缓冲区要足够大。指针同时后移直到复制完终止符。重叠内存不能用简易 strcpy,应用 memmove。

完整程序

#include <stdio.h>

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