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语言】模拟实现库函数strcpy函数

// 模拟实现库函数strcpy函数 #include #include char* my_strcpy(char const *p, char *q) { char *ret = q; ...
  • zhaoyaqian552
  • zhaoyaqian552
  • 2015年07月02日 10:09
  • 1011

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

strcpy、strcat、strcmp这三个库函数是初级学习阶段经常写到的三个库函数,也是一些大公司比较喜欢出的面试题。今天,就尝试用my_strcpy、my_strcat、my_strcmp这三个...
  • Monster_Girl
  • Monster_Girl
  • 2016年07月31日 19:06
  • 2385

strcpy的用法、c语言实现、及注意点

char * strcpy ( char * destination, const char * source ); C语言标准库函数strcpy,把从src地址开始且含有NULL结束符的字符串复制到...
  • u010418035
  • u010418035
  • 2015年03月31日 11:36
  • 5464

【面试题】strcpy的严格实现

出现频率最高的笔试题    关键字:C++,strcpy,字符串,复制,拷贝,copy,笔试,试题    题目:    已知strcpy函数的原型是:        char * strcpy(cha...
  • jianxiong8814
  • jianxiong8814
  • 2007年06月05日 23:04
  • 1322

C语言:编写strcpy函数

很多公司的面试官在面试程序员的时候,要求应聘者写出库函数strcpy()的工作方式或者叫实现,很多人以为这个题目很简单,实则不然,别看这么一个小小的函数,它可以从三个方面来考查:(1)编程风格(2)出...
  • Scenlyf
  • Scenlyf
  • 2016年06月11日 18:50
  • 1154

C语言_编写说明strlen、strcpy、strcat、strcmp如何实现的

随便定义一个char类型字符串数组,此以char string[] = "iphone";为例。 实现strlen char string[] = "iphone";     int...
  • xiu619544553
  • xiu619544553
  • 2015年04月25日 15:57
  • 397

c语言strcpy()用法

例如: 定义一个字符串char a[20],和一个字符串c[]="i am a teacher!"; 把c复制到a中就可以这样用:strcpy(a,c); 这个函数包含在头文件 中. 程序代码...
  • goodai007
  • goodai007
  • 2011年02月18日 11:05
  • 1417

【c语言】 my_strcpy 实现字符串拷贝

原型声明:char *my_strcpy(char *dst,char const *src) 功能:把src所指由'\0'结束的字符串复制到dst所指的数组中。 说明:1.src和dst所指的内存区...
  • i_fcy
  • i_fcy
  • 2015年05月21日 18:06
  • 1270

C语言 不使用strcpy 函数实现字符串复制功能

字符串复制是字符串操作中比较常用的操作之一。该函数的功能为:把源字符数组中的字符串复制到目的字符数组 中,字符串结束标志“\0”也一同复制。 源代码:...
  • LiuBo_01
  • LiuBo_01
  • 2017年10月16日 17:00
  • 811

模拟实现strcpy strncpy

strcpy的作用是将一个字符串的内容复制到另外一个字符数组中,包括字符串的终结符 #include #include #include char * my_strcpy(char *dest, c...
  • jelly_gemini
  • jelly_gemini
  • 2016年10月20日 17:43
  • 582
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章: C语言:模拟实现strcpy
举报原因:
原因补充:

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