实现 s t r c p y strcpy strcpy函数
char* strcpy(char *dest,const char*strstr)
{
assert((dest!=NULL)&&(strstr!=NULL);
while(*dest++=*strstr!='\0')
{
}
return dest;
}
实现 s t r c a t strcat strcat函数
char* strcat(char* dest,const char* src) {
char* d = dest;
while(*d!='\0') ++d;
while(*src!='\0') {
*d++=*src++;
}
*d='\0';
return dest;
}
实现 s t r c m p strcmp strcmp函数
int strcmp (const char * src, const char * dst)
{
int ret = 0 ;
while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)
++src, ++dst;
if ( ret < 0 )
ret = -1 ;
else if ( ret > 0 )
ret = 1 ;
return ret;
}
s t r i n g string string类
class String
{
public:
String(const char* str=NULL);//普通的构造函数
String(const String& other); //拷贝构造函数
~String();
String& operate = (const String& other);//复制构造
private:
char* m_data;//用于保存字符串
};
String::String(const char* str)
{
if (str==NULL)
{
m_data = new char[1];
*m_data = '\0';
}
else
{
int len = strlen(str);
m_data = new char[len+1];
strcpy(m_data, str);
}
}
String::~String()
{
if (m_data!=NULL)
{
delete[] m_data;
m_data = NULL;
}
}
String::String(const String & other)
{
int len = strlen(other.m_data);
m_data = new char[len + 1];
strcpy(m_data, other.m_data);
}
String& String::operate = (const String & other)
{
if (this==other)
{
return *this;
}
delete[] m_data;
int len = strlen(other.m_data);
m_data = new char[len + 1];
strcpy(m_data, other.m_data);
return *this;
}