要想实现我们自己的stringAPI,首先我们使用char数组实现,因为char数组是字符串的标准存储方式
strcpy:
char* mystrcpy(char *desc,const char *src) {
if (desc == NULL || src == NULL) {
return NULL;
}
char* str = desc;//不能直接对desc修改,需要返回原始位置
while ((*str = *src) != '\0') {
src++;
str++;
}
return desc;
}
因为desc和src是字符指针,所以需要进行判空,以防出现野指针,src是源字符串,不应该被修改
使用const修饰
strlen:
int mystrlen(const char* s1) {
if (s1 == NULL) {
return 0;
}
int n = 0;
while (*s1 != '\0') {
n++;
s1++;
}
return n;
}
strcmp:
int mystrcmp(const char* s1, const char* s2) {
while (*s1 && *s2 && *s1 == *s2) {
s1++;
s2++;
}
return *s1 - *s2;
}
strcpyn:(将源字符串的前n个字符复制到目标字符串)
char* mystrcpyn(char* desc, const char* src,int n) {
if (desc == NULL) {
return NULL;
}
char* str = desc;
int m = 0;
while (*str != '\0') {
str++;
m++;
}
if (src == NULL || n > m) {
return NULL;
}
while (n--) {
*str++ = *src++;
}
return desc;
}