1.模拟计算字符串长度 strlen
my_strlen
1.0指针的方式 难度系数***
#include<stdio.h>
#include<string.h>
int my_strlen(char *s)
{
char *p = s;
while(*p != '\0')
{
p++;
}
return p-s;
}
int main()
{
int ret = 0;
char arr[10] = "abcder";
ret = my_strlen(arr);
printf("%d\n",ret);
return 0;
}
2.0递归不创建临时变量 难度**
#include<stdio.h>
#include<string.h>
int my_strlen(const char *s)
{
if(*s == '\0')
return 0;
else
return 1+my_strlen(s+1);
}
int main()
{
int ret = 0;
char arr[10] = "abcder";
ret = my_strlen(arr);
printf("%d\n",ret);
return 0;
}
3.0计数器方式 难度*
#include<stdio.h>
#include<string.h>
int my_strlen(const char *s)
{
int count = 0;
while(*s)
{
count++;
s++;
}
return count;
}
int main()
{
int ret = 0;
char arr[10] = "abcder";
ret = my_strlen(arr);
printf("%d\n",ret);
return 0;
}
2.模拟拷贝一段字符strcpy
char* my_strcpy(char *dest, const char *src)//为了保证源字符串不被改变,需要在定义字符串之前加上const修饰;在这里需要注意,目标字符串必须有足够大的空间
{
assert(dest != NULL&&src != NULL);
char * address = dest;//保存目标字符串的起始地址,为了从起始地址开始返回拷贝之后的字符串
while ((*dest++ = *src++))//后置++,先使用,后++,先把源字符串的第一个字符拷到目标字符串中,然后依次向后拷贝,最后再与'\0'进行比较,当指针走到'\0'时,while语句不成立,结束循环
{
;
}
*dest = '\0';//需要将'\0'也拷贝进去
return address;
}
更新中......