#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;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
strlen, strcpy, strcmp, memcpy 的实现
原文地址:http://blog.csdn.net/quzhongxin/article/details/47344837