C语言:模拟实现strcpy

原创 2016年05月30日 17:15:38

模拟实现strcpy:
     (1)字符串拷贝函数就是将原串拷贝到新串,而原串无需变换,可以用const来修饰。包括‘\0’全部拷贝到新的子串dest。


     (2)while ((*dest++ = *src++) )
         {
           ;
         }

     这种遍历程序连同‘\0’一起拷贝了while ((*dest++ = *src++) )相当于while ((*dest++ = *src++) !=‘\0’),上一次拷贝到最后一个字符时后置加加,将src变为‘\0’了,而下次再进入while循环时先执行*dest++ = *src++,dest也拷贝为‘\0’.而此时不满足该条件跳出while循环。但是此时已经拷贝了'\0'了。这也是程序的先后性。
       或者可以:while (*src)
        {
            *dest = *src;
            dest++;
            src++;
        }
     原串为‘\0’时跳出,并未拷贝‘\0’,要赋值*dest = '\0',需要赋值 *dest = '\0'。
     其实对于以上两种方法均可都执行*dest = '\0'操作,即使赋值过再赋值也无妨。


     (3)另外要说的一点是:自加有副作用,因此return dest 可能读到最后'\0'就不输出了。因此需要定义新变量来保存首地址
char *ret = dest以便返回。


代码如下:



#include<stdio.h>
#include<stdlib.h>
#include<assert.h>


char* my_strcpy(char* dest, const char* src) //const使在函数中不能修改*src原先的值  
{
    assert(dest);    //两次断言-->检验参数,增加代码健壮性  
    assert(src);
    char* strdest = dest;    //保存原始指针地址
    while (*src)
    {
        *dest++ = *src++;
    }
    *dest = '\0';
    return strdest;
}


int main()
{
    char arr1[] = "hello world!";
    char arr2[20] ;
    char* ret = my_strcpy(arr2, arr1);
    printf("%s", ret);
    system("pause");
    return 0;
}


本文出自 “Han Jing's Blog” 博客,请务必保留此出处http://10740184.blog.51cto.com/10730184/1714516

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C语言:模拟实现strlen、strcpy、strcmp、strReverse、strcat函数

环境: Windows8,Visual Studio 2013 语言: C语言什么是C语言里的字符串?字符串或串(String)是由数字、字母、下划线组成的一串字符。一般记为s=“a1a2···a...

【C语言】模拟实现strcpy、strcat、strcmp函数

strcpy、strcat、strcmp这三个库函数是初级学习阶段经常写到的三个库函数,也是一些大公司比较喜欢出的面试题。今天,就尝试用my_strcpy、my_strcat、my_strcmp这三个...

C语言字符串函数的模拟实现(strlen、strcpy、strcat、strstr 、strcmp)

C语言库函数有很多,这里我针对几个字符串函数进行模拟实现: (1)strlen     字符串求长度函数 (2)strcpy     字符串拷贝函数 (3)strcat      字符串连接函数...

C语言模拟实现strcpy、strncpy、strcmp、strcat、strstr

1,模拟实现strcpy功能:字符串拷贝函数 代码:char* my_strcpy(char* dest, const char* src) { assert(dest); asse...

c语言模拟库函数strlen、strcpy、strcmp.

strlen()函数功能是计算字符串中字符个数,而字符本身就是一个字符数组,只不过末尾以‘\0’结束。 strcpy()函数是把从psrc地址开始且含有NULL结束符的字符串复制到以pdest开始...

C语言strlen, strcpy, strcmp,strcat函数的实现

#include     using namespace std;    namespace MJN {    size_t...

[C语言]strcat strstr strcpy strcmp strlen 的实现与使用

函数名:strcat  功能:把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳s...

strcpy/strncpy/strcat/strcmp/strlen函数的c语言实现

1、strcpy 头文件:#include 函数原型:char *strcpy(char *dest, const char *src) 功能:将字符串src拷贝到dest处 参数:src 为源字符...

字符串处理函数strlen、strcpy、strcat、strcmp和convert的C语言实现

本文主要用C语言实现了字符串处理中的如下几个函数功能。 1)Mystrlen实现的是求字符串的长度 2)Mystrcpy实现字符串的复制 3)Mystrcat实现连接两个字符串 4)Mystr...

strcpy 与memcpy 的用法以及C语言实现

c 函数库的函数 strcpy 的原形为: char *strcpy(char *strDes,const char * strSrc) strcpy按字面理解为:string copy,字符串复制。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)