strlen, strcpy, strcmp, memcpy 的实现

#include <iostream>
using namespace std;
namespace MyString {
    size_t strlen(const char* str);
    char* strcpy(char* dst, const char* src);
    int strcmp(const char* str1, const char* str2);
}
size_t MyString::strlen(const char* str) {
    if (str == NULL)
        return 0;
    size_t size = 0;
    while (*str++ != ‘\0‘)
        size++;
    return size;
};
char* MyString::strcpy(char* dst, const char* src) {
    if (!dst || !src)
        return dst;
    char* dst_origal = dst;
    while (*dst++ = *src++);
    return dst_origal;
}
int MyString::strcmp(const char* str1, const char* str2) {
    int result = 0;
    if (!str1 || !str2) {
        return *str1 - *str2;
    }
    while (*str1 && *str2 && *str1 == *str2) {
        str1++;
        str2++;
    }
    return *str1 - *str2;
}

namespace MyMemory {
    template <class T>
    T* memcpy(T* dst, const T* src, size_t num) {
        if (!src || !dst || num < 1)
            return dst;
        T* dst_org = dst;
        size_t i = 0;
        while ((i++ < num) && (*dst++ = *src++)) {}
        return dst_org;
    }
}

int main()
{
    const char* str = "+1234";
    const char* str1 = "+123383891744";
    const char* str2 = "-2194839580031234";
    const char* str3 = "-1234";
    const char* str4 = "  -123sa4";
    const char* str5 = "  -+";
    cout << MyString::strlen(str) << endl;

    cout << MyString::strcmp(str, str1) << endl;
    cout << MyString::strcmp("qwer", "qwert") << endl;
    cout << MyString::strcmp("qwer", "qwer") << endl;
    cout << MyString::strcmp("qwert", "qwer") << endl;
    char* str_cp = new char[10];
    MyString::strcpy(str_cp, str2);
    cout << str_cp << endl;

    char* str_1 = new char [20];
    MyMemory::memcpy(str_1, str4, MyString::strlen(str4)+1);
    cout << str_1 << endl;
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-07-30 10:19:58

strlen, strcpy, strcmp, memcpy 的实现的相关文章

实现字符串函数,strlen(),strcpy(),strcmp(),strcat()

1 #include<stdio.h> 2 #include<stdlib.h> 3 4 int my_strlen(char *str); 5 char *my_strcpy(char *dest, char *src); 6 char *my_strcat(char *dest, char *src); 7 int my_strcmp(char *str1,char *str2); 8 9 int main() 10 { 11 char dest[32] = "che

各种字符串函数(strcpy,strcmp,strlen)之深度剖析

//字符串复制函数1 void strcpy1(char str1[], char str2[]){ int i = 0; for (; str2[i] != '\0'; i++){ str1[i] = str2[i]; } str1[i] = '\0'; } //2 void strcpy2(char str1[], char str2[]){ int i = 0; while (str1[i] = str2[i])i++; } //字符串长度函数1 int strlen1(char str[

strlen,strcat,strcpy,strcmp的实现

自己设计实现strlen,strcat,strcpy,strcmp. int my_strlen(char *a) { int count=0; while(*a) { a++; count++; } return count; } char* my_strcat(char *a,char *b) { char *c; c=a; while(*a) { a++; } while(*b) { *a++=*b++; } return c; } char* my_strcpy(char *c,char

strlen strcat strcpy strcmp 自己实现

strlen strcat strcpy strcmp 自己实现 strlen include <stdio.h> #include <string.h> #include <assert.h> size_t my_strlen(const char* str){ assert(str != NULL); const char *tmp = str; size_t count = 0; while(*tmp++ != '\0'){ count++; } return c

strcpy和memcpy的编程实现

1 char *strcpy(char *dest,char *src) 2 { 3 char *d=dest;//输入的参数进行备份 4 char *s=src; 5 6 int count=0; 7 8 assert(dest!=NULL && src!=NULL);//指针合法性检测 if(src==dest) return src; 11 count = strlen(src) +1;//计算src字符串长度 12 if(count <= 1) return 0;//src字

sprintf、strcpy和memcpy的区别

做某题用到了sprintf把一个字符数组(字符串)写到二维字符数组里,然后耗时挺长的,想了想strcpy好像也可以,事实证明strcpy效率果然更高,然后想了想觉得memcpy好像也可以.实践了一下的确可以,效率不用说也比sprintf高,毕竟memcpy是对内存操作.然后我就百度了一下它们的区别,做个总结(记笔记). sprintf 可以用%s来实现格式化写入,其他两个做不到. strcpy 遇到\0结束(\0也被复制了),只能拷贝字符串. memcpy 根据size大小来复制,可以复制各种数

strcpy vs memcpy

[本文连接] http://www.cnblogs.com/hellogiser/p/strcpy_vs_memcpy.html [分析] strcpy和memcpy都是标准C库函数,它们有下面的特点. strcpy提供了字符串的复制.即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符. 已知strcpy函数的原型是 C++ Code 1   char *strcpy(char *dest, const char *src); memcpy提供了一般内存的复制.

strcpy and memcpy

1. Inconsist length. char a3[2]; char *a = "Itis   " strcpy(a3, a); It is wrong. a3 will be correct, but a is missing. memcpy(a3, a, sizeof(char)* 2); It would be correct for both a3 and a. char a2[2]; char a3[2]; strcpy(a2, "aaaaaaaaaaaaaa

转载 C++常用库函数atoi,itoa,strcpy,strcmp的实现

C++常用库函数atoi,itoa,strcpy,strcmp的实现 C语言字符串操作函数 1. 字符串反转 - strRev2. 字符串复制 - strcpy3. 字符串转化为整数 - atoi4. 字符串求长 - strlen5. 字符串连接 - strcat6. 字符串比较 - strcmp7. 计算字符串中的元音字符个数8. 判断一个字符串是否是回文1. 写一个函数实现字符串反转 版本1 - while版 void strRev(char *s){    char temp, *end