1.模拟实现strcpy:
具体代码实现如下:
//1. 模拟实现strcpy
char * my_strcpy(char* dest,const char *src){
char* ret = dest;
assert(dest);
assert(src);
/*while (*dst++ = *src++){
;
}*/
while (*src != '\0'){
*dest = *src;
dest++;
src++;
}
*dest = *src;
return ret;
}
int main(){
char *str = "hello";
char arr[20] = { 0 };
char ret = my_strcpy(arr,str);
printf("%s\n",arr);
return 0;
}
2.模拟实现strcmp
具体代码实现如下:
//2. 模拟实现strcmp
int my_strcmp(const char *str1,const char* str2){
assert(str1);
assert(str2);
while (*str1 == *str2){
if (*str1 == '\0')
return 0;
str1++;
str2++;
}
if (*str1 > *str2){
return 1;
}
else{
return -1;
}
return 0;
//return *str1 - *str2;
}
int main(){
int ret = my_strcmp("hha","hello");
/*int ret = strcmp("haha","hello");*/
if (ret < 0){
printf("字符串1 小于 字符串2\n");
}
else if (ret == 0){
printf("字符串1 等于 字符串2\n");
}
else if (ret > 0){
printf("字符串1 大于 字符串2\n");
}
return 0;
}
3.模拟实现strcat函数:
具体实现代码如下:
//3.模拟实现strcat
char* my_strcat(char *dest,char* src){
assert(dest);
assert(src);
char *ret = dest;
//找‘\0’
while (*dest != '\0'){
dest++;
}
//拷贝 数据
while (*dest++ = *src){
;
}
return ret;
}
int main(){
char arr1[30] = "hello";
char arr2[20] = "jijixiong";
my_strcat(arr1,arr2);
printf("%s\n",arr1);
return 0;
}
4.模拟实现strlen
具体实现代码如下:
//4. 模拟实现strlen
//(1)计数实现
int my_strlen(const char *str, int count){
while (*str != '\0'){
count++;
str++;
}
return count;
}
/**
(2)递归实现
int my_strlen(const char* str){
if (*str == '\0'){
return 0;
}
else {
return 1 + my_strlen(str + 1);
}
}
*/
int main(){
char str[20] = "hellojijixiong";
int count = 0;
int ret = my_strlen(str,count);
printf("字符串str的长度为:%d\n",ret);
return 0;
}
5.