[C/C++笔面试]不用库函数自己实现strcpy和strncpy

/*********************************************************
-  Copyright (C): 2016
-  File name    : mystrcpy.c
-  Author       : - Zhaoxinan -
-  Date         : 2016年08月27日 星期六 13时07分41秒
-  Description  : 

*  *******************************************************/
#include 
#include <assert.h>

char * my_strcpy(char *strDest, const char * strSrc)
{
    assert((strDest != NULL) && (strSrc != NULL));
    //if (strDest == NULL || strSrc == NULL) return NULL;

    //保存目标字符串的首地址
    char *strDestCopy = strDest;
    while ((*strDest++ = *strSrc++) != '\0');

    return strDestCopy;
}

char * my_strncpy(char *strDest, const char *strSrc, int num)
{
    assert((strDest != NULL) && (strSrc != NULL));
    //if (strDest == NULL || strSrc == NULL) return NULL;

    //保存目标字符串的首地址
    char *strDestcopy = strDest;
    while ((num--)&&(*strDest++ = *strSrc++) != '\0');
    //如果num大于strSrc的字符个数,将自动补'\0'
    if (num > 0)
    {
        while(--num)
        {
            *strDest++ = '\0';
        }
    }
    return strDestcopy;
}


int main()
{
    char *strSrc = "hello world!";
    char strDest[20] = {0};
    char strDect[20] = {0};

    printf("strSrc = %s\n", strSrc);
    my_strcpy(strDest, strSrc);
    printf("strDest = %s\n", strDest);
    my_strncpy(strDect, strSrc, 3);
    printf("strDect = %s\n", strDect);

    return 0;
}

这里写图片描述

你可能感兴趣的:(C/C++)