字符串拷贝函数的实现
#include<stdio.h>
#include<assert.h>
//字符串拷贝函数
char* My_strcpy(char* des, const char* src)
{
//assert
assert(des != NULL && src != NULL); //断言,指针为空报错
char* address = des;//address作用是防止 return的时候 des指向最后了
while (*des++ = *src++);
return address;
}
int main()
{
char arr[10] = "abcde";
char brr[10] = "";
printf("%s\n",My_strcpy(brr, arr));
printf("%s\n", brr);
return 0;
}
字符串长度函数两种方法实现
#include<stdio.h>
#include<assert.h>
//"abcde" -> 5?6? -> 5(返回的是字符串有效长度)
//字符串长度函数
int My_strlen(const char* str)
{
assert(str != NULL);
if (NULL == str)
return -1;
int count = 0;
while (*str != '\0')
{
count++;
str++;
}
//此时 while循环退出 代表着指针str现在指向的是字符串结尾标志'\0'
return count;
}
//用指针-指针的方式 求字符串有效长度
int My_strlen_1(const char* str)
{
assert(str != NULL);
if (NULL == str)
return -1;
const char* p = str;
while (*p != '\0')
{
++p;
}
return p - str;
}
int main()
{
const char str[] = "abcde";
printf("%d\n",My_strlen(str));
printf("%d\n", My_strlen_1(str));
return 0;
}