模拟实现strlen
方法一
我们知道一个c风格的字符串,是以\0,结尾的
我们要模拟实现strlen,只要遍历一次数组,找到\0的位置即为结束。
int my_strlen(const char* str ){
int len = 0;
while (str[len] != '\0'){
len++;
}
return len;
}
方法二
这里我们也可以用递归的思想解决这个问题
int my_strlen(const char* str ){
if (str[0] == '\0')
return 0;
return 1 + my_strlen(str + 1);
}
两个函数的结果是一样的。
模拟实现strcpy
我们知道strcpy是将一组字符串拷贝到另一组字符串
例如
char str1[100] = "hello";
char str2[100] = "sing dance rap baskertball";
strcpy(str1, str2);
puts(str1);//打印字符串
完成了拷贝。
这里需要注意官方对strcpy的解释及注意事项
char* strcpy(char * destination, const char * source );
- Copies the C string pointed by source into the array pointed by destination, including the terminating
null character (and stopping at that point). - 源字符串必须以 ‘\0’ 结束。
- 会将源字符串中的 ‘\0’ 拷贝到目标空间。
- 目标空间必须足够大,以确保能存放源字符串。
- 目标空间必须可变。
模拟strcpy函数
char *my_strcpy(char* dest, const char* src){
//参数校验!!很重要
if (dest == NULL || src == NULL)
return dest;
int i;
for ( i = 0; src[i]; i++){
dest[i] = src[i];
}
dest[i] = '\0';
return dest;
}