手动实现c字符串的基本函数
1.strlen函数
原型:size_t strlen(const char *str),计算字符串的长度
int my_strlen(const char *str){
int count = 0;
assert(str != nullptr);
while(*str != '\0'){
count++;
str++;
}
return count;
}
2.strcpy函数
原型:char *strcpy(char *dest, const char *src),将src指向的字符串复制到dest中
char *my_strcpy(char *str_des, const char *str_source){
assert(str_des != nullptr);
assert(str_source != nullptr);
char *ret = str_des;
while((*str_des++ = *str_source++) != '\0'){
;
}
return ret;
}
3.strcat函数
原型:char *strcat(char *dest, const char *src),将src指向的字符串追加到dest指向的字符串结尾。
char *my_strcat(char *str_des, const char *str_source){
assert(str_des != nullptr);
assert(str_source != nullptr);
char *ret = str_des;
while(*str_des){
str_des++;
}
while((*str_des++ = *str_source++) != '\0'){
;
}
return ret;
}
4.strcmp函数
原型:int strcmp(const char *str1, const char *str2),把str1指向的字符串和str2指向的字符串进行比较,小于返回一个小于零的值,大于返回一个大于零的值,相等返回0
int my_strcmp(const char *str1, const char *str2){
while(*str1 && *str2){
if(*str1 == *str2){
str1++;
str2++;
}
else if(*str1 > *str2)return -1;
else return 1;
}
if(*str1)return 1;
if(*str2)return -1;
return 0;
}
5.strchr函数
原型:char *strchr(const char *str, int c),在参数str所指向的字符串中搜索第一次出现字符c的位置,如果未找到返回NULL
char *my_strchr(const char *str, char c){
while(*str++ != '\0'){
if(*str == c)return str;
}
return NULL;
}
6.strstr函数
原型:char *strstr(const char *haystack, const char *needle),在字符串haystack中查找第一次出现字符串needle的位置,不包括终止符’\0’
char *my_strstr(char *str1, char *str2){
const char *index1;
const char *index2;
if(!str1 || !str2)return str1;
//遍历str1字符串
while(*str1){
index1 = str1;
index2 = str2;
do{
if(!*index2)return str1;
}while(*index1++ == *index2++);
str1++;
}
return NULL;
}