题目
编写函数实现将源字符串复制到目标字符数组中(不调用标准库函数 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