2.30模型字符串拷贝

【注:本程序验证是使用vs2013版】

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#pragma warning(disable:4996)

/*字符串拷贝函数,逐渐接近计算机操纵的方式来循序渐进的*/

void my_strcpy(char *dest, char *src){
    int i;
    for (i = 0; *(src + i) != '\0'; i++){
        *(dest + i) = *(src + i);
    }
    *(dest + i) = 0;
}

void my_strcpy2(char *dest, char *src){
    while (*src != 0){
        *dest = *src;
        dest++;
        src++;
    }
    *dest = 0;
}

void my_strcpy3(char *dest, char *src){
    while (*src != 0){
        *dest++ = *src++; //先用了*   再加  (跟i++  ++i类似)
    }
    *dest = 0;
}

/*推荐方式*/
int my_strcpy4(char *dest, char *src){
    char *to = dest;//这里是否需要定义成全局变量?或者静态变量?不清楚
    char *from = src;
    if (to == NULL || from == NULL){
        return -1;
    }
    while (*to++ = *from++){//这里实际包含三部  *desr = *src、  dest++,src++、  判断*from是否为0,为0跳出循环
        NULL;
    }
    return 0;
}


int main(void){
    char str[] = "abcde";
    char buf[50];
    int ret = 0;

    my_strcpy(buf, str);//方式一
    printf("buf1 = %s\n", buf);
   my_strcpy2(buf, str);
//方式二 printf("buf2 = %s\n", buf);
   my_strcpy3(buf, str);
//方式三 printf("buf3 = %s\n", buf);
  
/* 这里是推荐的字符串拷贝方法,注意: 1.判断形参指针是否为空(有返回值) 2.最好不要直接使用形参,内部定义一个变量(通过辅助变量将形参接过来) */ ret = my_strcpy4(buf, str);//推荐方式 if (ret != 0) { printf("my_strcpy4 err:%d", ret); return; } printf("buf4 = %s\n", buf);
   printf(
"\n"); system("pause"); return 0; }

 

posted @ 2019-06-28 07:02  大黄蜂_001  阅读(148)  评论(0编辑  收藏  举报