strcpy、strncpy代码实现。

本文详细探讨了strcpy和strncpy函数的实现细节,包括判断地址、保证目标字符串末尾的''、确保目标区域足够大等。提到了strlcpy虽能防止内存重叠但非标准C库函数,推荐在明确内存大小时使用strncpy以避免缓冲区越界。同时,解释了内存重叠的两种情况,通过示例说明其可能导致的意外结果。最后,补充提及了memcpy作为替代选择。
摘要由CSDN通过智能技术生成

要求:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。

/*********************************************************************************
 *      Copyright:  (C) 2015 songyong<handy_skyoutlook.com>
 *                  All rights reserved.
 *
 *       Filename:  strcpy1.c
 *    Description:  This file 
 *                 
 *        Version:  1.0.0(2015年09月17日)
 *         Author:  sky <handy_sky@outlook.com>
 *      ChangeLog:  1, Release initial version on "2015年09月17日 14时44分21秒"
 *                 
 ********************************************************************************/
#include<stdio.h>
#include<assert.h>


#define LEN 256
/********************************************************************************
 *  Description:
 *   Input Args:
 *  Output Args:
 * Return Value:
 ********************************************************************************/
int main (int argc, char **argv)
{
    char *my_strcpy(char * dest,const char * src);
    char *my_strncpy(char *dest,const char * src, size_t len);
    char a[LEN];
    char b[] = "who's your dad";
#if 0 
    char str[100] = {0};
    my_strncpy(str,"123456",5);
    my_strcpy(str +2,str);
    printf("str :%s\n",str);
#endif


    printf("a[] = %s\n",my_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值