自我实现strlen() strcmp() strcat() strcpy()
1.my_strlen()的实现:
#include<iostream>
#include<assert.h>
#include<unistd.h>
using namespace std;
int my_strlen(char * str)
{
assert(str != NULL);
int count=0;
while(*str++ != '\0')
{
count ++;
}
return count;
}
int main()
{
char *str = "nihao";
int len = my_strlen(str);
cout << len<< endl;
return 0;
}
2.strcat()函数的实现
#include<iostream>
#include<unistd.h>
#include<stdlib.h>
#include<assert.h>
using namespace std;
char * my_strcat(char* str1, const char * str2)
{
assert(str1 != NULL && str2 != NULL);
char * temp_str1 = str1;
const char *temp_str2 = str2;
while(*temp_str1 != '\0')
{
temp_str1++;
}
while(*temp_str2 != '\0')
{
*temp_str1++ = *temp_str2++;
}
*temp_str1 == '\0';
return str1;
}
int main()
{
char str1[20] = "hello";
char str2[] = "world";
char * str = my_strcat(str1, str2);
cout << str << endl;
return 0;
}
3.strcmp() 函数的实现
#include<iostream>
#include<unistd.h>
#include<assert.h>
using namespace std;
int my_strcmp(const char *str1, const char *str2)
{
assert(str1 != NULL && str2 != NULL);
while( (*str1) == (*str2) && *str1 && *str2)
{
str1++;
str2++;
}
if(*str1 == '\0'&& *str2 == '\0')
return 0;
else if (*str1 >*str2)
return 1;
else
return -1;
}
int main()
{
char *str1 = "world";
char *str2 = "world";
int len =my_strcmp(str1, str2);
cout << len << endl;
return 0;
}
4.strcpy()函数的实现
#include<iostream>
#include<unistd.h>
#include<assert.h>
using namespace std;
char *my_strcpy(char *dest, char *src)
{
assert(dest != NULL && src != NULL);
char * temp_dest = dest;
char * temp_src = src;
while(*temp_src)
{
*temp_dest++ = *temp_src++;
}
*temp_dest = '\0';
return dest;
}
int main()
{
char arr1[] = "hello";
char arr2[] = "world";
char *str = my_strcpy(arr1, arr2);
cout << str << endl;
return 0;
}