字符串拷贝当中的问题

微软的字符串拷贝:

char * cdecl strcpy(char * dst,const char * src)
{
    char *cp = dst;
    while(*cp++ = *src++);
    return dst;
}

执行效率高,但漏洞多
比较完备的字符串拷贝:

char * strcpy(char * dst,const char * src)
{
    char *cp = dst;
    assert(dst != NULL && src != NULL);
    while(*src != '\0')
        *cp++ = *src++;
    *cp = '\0';
    return dst;
}

在使用字符串拷贝产生的问题:

#include<iostream>
#include<stdio.h>
int main(void)
{
    char s[] = "123456789";
    char d[] = "1234";
    strcpy(d,s);
    printf("%s,\n%s",d,s);
    return 0;
}

输出:123456789, 6789
原因:程序分配内存地址是连续内存的问题
存储:1234\0123456789\0
拷贝:123456789\06789\0
经验:分配空间要给源字符串和目标字符串预留足够的空间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值