字符串函数strcpy,strcat,memcpy的实现

实现strcpy

/****************************************
*vs 2015测试成功
*如要考虑到dest的长度小于src,则需要判断条件
*邮箱 yqtao@whu.edu.cn
*欢迎交流
*****************************************/
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <string>
using namespace std;
char* mystrcpy(char* dest, const char* src)
{
    //考虑条件
    if (nullptr == dest || nullptr == src)
        return nullptr;
    char* start = dest;
    while (*src)
    {
        *start = *src;
        src++;
        start++;
    }
    *start= '\0';
    //简单写法,其中最后的已有\0了
    //while ((*start++=*src++)!='\0');
    return dest;
}
//测试代码
int main(int argc, char*argv) 
{
    char src[6] = { 'h','e','l','l','o'};
    char *dest=new char[strlen(src) + 1];
    cout << mystrcpy(dest, src) << endl;
    delete[]dest;
    dest = nullptr; 
}

实现strcat

char* mystrcat(char* dest, const char* src)
{

    char* start = dest;
    while (*dest++);
    dest--;//指向字符串的结束符
    //可用dest=dest+strlen(dest)达到\0位置
    while (*dest++ = *src++);//循环赋值
    return start;
}

memcpy实现

#include "stdafx.h"
#include <iostream>
#include <vector>
#include <string>
using namespace std;
//memcpy不仅仅能赋值char类型,size为赋值的个数
void* mymemcpy(void* dest, const void* src,size_t size)
{
    if (dest == nullptr || src == nullptr)
        return nullptr;
    char *tempTo = (char*)dest;//保存首地址
    char *tempFrom = (char*)src;
    while (size-- > 0)
        *tempTo++ = *tempFrom++;//赋值size个值
    return dest;
}
int main(int argc, char*argv) 
{
    char src[6] = { 'h','e','l','l','o'};
    char dest[20] = { 'i' };
    mymemcpy(dest, src, 3);
    cout << dest<< endl;

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值