zoukankan      html  css  js  c++  java
  • strcpy的实现

     1 //
     2 //  Strcpy.c
     3 //  libin
     4 //
     5 //  Created by 李宾 on 15/8/20.
     6 //  Copyright (c) 2015年 李宾. All rights reserved.
     7 //
     8 
     9 #include <stdio.h>
    10 #include <assert.h>
    11 #include <string.h>
    12 /***********************************************不考虑覆盖*****************************************/
    13 char * Strcpy1(char *dst, const char *src)//const 在*号左边,指的是指针所指向的内容为常量,不允许修改。
    14 {
    15     assert(dst != NULL && src != NULL);   //判断指针是否为空,条件为假,中断程序。
    16    
    17     char *ret = dst;
    18     
    19     while((*dst++ = *src++)!='');
    20     
    21     return ret;                        //返回dst是为了支持链式表达式。例如:int l=strlen(strcpy(strA,strB));
    22 }
    23 
    24 
    25 
    26 /**********************************************考虑内存重叠******************************************/
    27 char *my_memcpy(char *dst, const char* src, int len)
    28 {
    29     char * ret = dst;
    30     int n = len + 1;
    31     if (dst>=src && dst <= src+len)
    32     {
    33         dst = dst + len;
    34         src = src + len;
    35         while (n --)
    36         {
    37             *dst-- = *src--;
    38         }
    39     }
    40     else
    41         while (n--)
    42         {
    43             *dst++ = *src++;
    44         }
    45     return ret;
    46         
    47 }
    48 
    49 char * Strcpy2(char *dst, const char *src)
    50 {
    51     assert(dst!= NULL && src != NULL);
    52     
    53     char *ret = dst;
    54     
    55     my_memcpy(dst, src, (int)strlen(src));
    56     
    57     return ret;
    58 }
    59 
    60 
    61 
    62 int main()
    63 {
    64     //char *a = "hello";                //含义是先新建一个字符串,内容是abcd 然后str1是一个头指针,指向这个串.
    65     char a[6] = {'a','b','c','d','e'};  //但是这个新建串是作为const存在的,并不是一个可以编辑的变量
    66     char b[6] = {'l','o','v','e','i'}; //因此,一旦你想更改其中的值,程序就会挂掉.
    67     char *c;
    68     //a = Strcpy1(a,b);   数组名是指针常量,不能赋值。
    69     c = Strcpy1(a, b);
    70     puts(c);
    71     
    72 }
  • 相关阅读:
    JeePlus:代码生成器
    JeePlus:API工具
    Java实现 洛谷 P1023 税收与补贴问题
    Java实现 洛谷 P1023 税收与补贴问题
    Java实现 洛谷 P1023 税收与补贴问题
    Java实现 洛谷 P1328 生活大爆炸版石头剪刀布
    Java实现 洛谷 P1328 生活大爆炸版石头剪刀布
    Java实现 洛谷 P1328 生活大爆炸版石头剪刀布
    Java实现 洛谷 P1328 生活大爆炸版石头剪刀布
    Java实现 洛谷 P1328 生活大爆炸版石头剪刀布
  • 原文地址:https://www.cnblogs.com/masterlibin/p/4746284.html
Copyright © 2011-2022 走看看