[应用方案] 字符串拷贝

[复制链接]
2615|22
mollylawrence 发表于 2025-8-16 20:26 | 显示全部楼层
memcpy:通用内存复制,需手动处理终止符​
mmbs 发表于 2025-8-16 21:12 | 显示全部楼层
避免使用strcpy,优先用strncpy并手动添加'\0'
louliana 发表于 2025-8-16 21:44 | 显示全部楼层
使用 strncpy 时,手动添加终止符;使用 strcpy_s 和 strncpy_s 时,自动添加终止符。
vivilyly 发表于 2025-8-18 19:34 | 显示全部楼层
若源或目标指针为NULL,调用字符串函数会触发未定义行为
jtracy3 发表于 2025-8-19 11:18 | 显示全部楼层
在使用 strcpy 或 strncpy 之前,始终检查目标缓冲区的大小
mattlincoln 发表于 2025-8-19 13:20 | 显示全部楼层
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int safe_strcpy(char *dest, size_t dest_size, const char *src) {
    if (dest == NULL || src == NULL || dest_size == 0) {
        return -1; // 错误处理
    }
    snprintf(dest, dest_size, "%s", src);
    return 0;
}

int main() {
    char src[] = "Hello, World!";
    char dest[10];
    if (safe_strcpy(dest, sizeof(dest), src) != 0) {
        printf("Copy failed!\n");
    } else {
        printf("Copied: %s\n", dest); // 输出: Copied: Hello, W
    }
    return 0;
}
wangdezhi 发表于 2025-8-19 17:02 | 显示全部楼层
检查指针有效性,区分字符串与二进制数据
lzbf 发表于 2025-8-19 20:51 | 显示全部楼层
无论使用哪个函数,​​必须确保目标缓冲区 dest的大小足够容纳源字符串 src的所有字符
lzbf 发表于 2025-8-20 14:15 | 显示全部楼层
目标字符串以空字符结尾,以避免潜在的问题。
nomomy 发表于 2025-8-20 15:24 | 显示全部楼层
strcpy        从源字符串复制到目标缓冲区,直到遇到'\0'
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部