关闭

实现字符串拷贝strcpy和memcpy,以及字符串比较函数strcmp

486人阅读 评论(0) 收藏 举报
分类:

这些函数是很容易出现在面试笔试中的,需要牢记,其实也是很容易实现的,只不过要考虑周全,注意异常情况判断。

/*
*实现字符串拷贝
*为什么要返回char*?(为了支持链式表达式,如strlen(strcpy(p,q)求复制后的长度))
*/
char* strcpy(char* strDest,const char* strSrc){
    if(strDest==NULL||strSrc==NULL)
        return NULL;
    char* strDestCopy=strDest;  //保存字符串首地址
    while((*strDest++=*strSrc++)!='\0');
    return strDestCopy;
}

/*
*实现内存拷贝
*/
#include <assert.h>
void* memcpy(void* memTo,const void* memFrom,size_t size){
    assert((memTo!=NULL)&&(memFrom!=NULL)); //必须保证有效
    char* tempTo=(char*)memTo;
    char* tempFrom=(char*)memFrom;
    while(size-->0){
        *tempTo++=*tempFrom++;
    }
    return memTo;
}

strcpy和memcpy的区别:

(1)复制的内容不同,strcpy只能复制字符串,而memcpy可以复制任意内容;

(2)复制的方法不同,strcpy不需要指定长度;

(3)用途不同,字符串复制时用strcpy,复制其他类型数据时,一般使用memcpy。


strcmp实现:

int strcmp(const char* src,const char* dst){
    assert((src!=NULL)&&(dst!=NULL));
    while(*src!='\0'&&*dst!='\0'&&*src++==*dst++);
    int ret=*src-*dst;
    if(ret>0) return 1;
    else if(ret==0) return 0;
    else return -1;
}


0
0
查看评论

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

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

C语言中的复制函数(strcpy和memcpy)

PS:初学算法,开始刷leetcode,Rotate array的预备知识(写的算法Time Limit Exceed)于是百度高效算法,本篇讲述预备知识。 1、strcpy和strncpy函数 这个不陌生,大一学C语言讲过,其一般形式为strcpy(字符数组1,字符串2)作用是将字符串2复制到...
  • u011391629
  • u011391629
  • 2016-05-14 17:15
  • 21391

C中字符串拷贝函数strcpy和内存拷贝函数memcpy的区别与实现

strcpy和memcpy都是标准C库函数,它们有下面的特点。 strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符'\0'。 已知strcpy函数的原型是:char* strcpy(char* dest, cons...
  • vansbelove
  • vansbelove
  • 2016-11-03 16:19
  • 4021

自定义函数复制字符串

自定义函数复制字符串 自定义一个函数,然后将一串字符串输入到数组s1中
  • xiaochenxiaoren
  • xiaochenxiaoren
  • 2017-10-16 15:14
  • 295

字符串拷贝函数strcpy的几种实现思想方式

#include <iostream> #include <assert.h> //strcpy标准实现 char* CustomStrCpy1( char* Dest, const char* Src ) { if( nullptr == Dest || nullp...
  • freeangeles
  • freeangeles
  • 2014-05-22 11:16
  • 1406

实现自己的字符串拷贝函数Strcpy

strcpy是C语言的库函数,用于完成字符串的拷贝,很多笔试面试过程中要求我们自己实现这个函数。 字符串拷贝本身并没有太多技巧,可以利用最后的'\0'作为界限,用循环完成拷贝,代码如下 char *Strcpy(char *strDst, const char *strSrc) { ...
  • cyfcsd
  • cyfcsd
  • 2016-05-13 08:39
  • 1715

字符串拷贝函数strcpy()

#include<iostream> #include<stdio.h>char * my_strcpy( char *des,const char src); char * my_strcpy( char *des,const char *src) { if(NUL...
  • qq_32744005
  • qq_32744005
  • 2016-07-27 17:19
  • 505

复制字符串strcpy()函数

strcpy()函数原型:#include <string.h> char *strcpy(char * restrict s1, const char * restrict s2);strcpy()函数为复制一个字符串(参数中的s2)的全部内容到另一个位置(参数中的s1)。其中,目标位...
  • kehanxin
  • kehanxin
  • 2015-12-28 15:40
  • 135

C语言:利用指针和函数调用编写字符串拷贝函数strcpy

#include #include/*断言的头文件*/ char *my_strcpy(char *dest,const char *src) /*传参,把src依次传给dest,指针数组,每一个都是地址*/ {    ...
  • hanjing_1995
  • hanjing_1995
  • 2016-05-30 17:13
  • 3335

完成字符串拷贝(sprintf、strcpy 及 memcpy 函数)函数之间的区别

sprintf 可以进行额外的格式化 strcpy 会复制直到出现 '' 为止,可能溢出 strncpy 会复制一个以 '' 结束的字符串,但是如果字符串长度超过指定数量则被截断,但结果可能不包含 '' 表示结束 memcpy 只负责复制指定数量...
  • ycguhang
  • ycguhang
  • 2013-02-19 21:25
  • 6256
    个人资料
    • 访问:13209次
    • 积分:500
    • 等级:
    • 排名:千里之外
    • 原创:37篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类