网站优化两大核心要素是什么,dede网站 index.php无法访问,专业网页制作什么好,卖水果网站建设的策划书文章目录 strlen的使用和模拟实现函数的原型strlen模拟实现#xff1a;方法1方法2方法3 strcpy的使用和模拟实现函数的原型strcpy的模拟实现#xff1a; strcat的使用和模拟实现函数的原型strcat的模拟实现#xff1a; strcmp的使用和模拟实现函数的原型strcmp的模拟实现 本… 文章目录 strlen的使用和模拟实现函数的原型strlen模拟实现方法1方法2方法3 strcpy的使用和模拟实现函数的原型strcpy的模拟实现 strcat的使用和模拟实现函数的原型strcat的模拟实现 strcmp的使用和模拟实现函数的原型strcmp的模拟实现 本章的内容主要讲解这4个与字符串相关的函数的原型、使用以及模拟实现 strlen的使用和模拟实现
函数的原型
size_t strlen ( const char * str );1.字符串以 ‘\0’ 作为结束标志strlen函数返回的是在字符串中 ‘\0’ 前⾯出现的字符个数不包含 ‘\0’ )。 2.参数指向的字符串必须要以 ‘\0’ 结束。 3.注意函数的返回值为size_t所以结果不能为负数。 4.strlen的使⽤需要包含头⽂件string.h strlen模拟实现
方法1
//计数器方式
int my_strlen(const char* str)
{int count 0;while (*str){count;str;}return count;
}
int main()
{const char* str1 fallzzzzz;int tmp my_strlen(str1);printf(lenth %d\n, tmp);return 0;
}方法2
//不能创建临时变量计数器
//使用递归的方式
int my_strlen(const char* str)
{if (*str \0)return 0;elsereturn 1 my_strlen(str 1);
}
int main()
{const char* str1 fallzzzzz;int tmp my_strlen(str1);printf(lenth %d\n, tmp);return 0;
}方法3
//指针-指针的⽅式
//指针-指针的结果是两指针之间的元素个数
int my_strlen(char* str)
{char* p str;while (*p ! \0){p;}return p - str;
}
int main()
{const char* str1 fallzzzzz;int tmp my_strlen(str1);printf(lenth %d\n, tmp);return 0;
}strcpy的使用和模拟实现
函数的原型 char * strcpy ( char * destination, const char * source ); 我们把source称作源字符串 我们把destination称作目标字符串 该函数为拷贝函数可以把源字符串拷贝到目标字符串 1.源字符串必须以 ‘\0’ 结束。 2.该拷贝会将源字符串中的 ‘\0’ 拷贝到目标空间。 3.⽬标空间必须足够大以确保能存放源字符串。 4.⽬标空间必须是可修改的即不为const。 strcpy的模拟实现
char* my_strcpy(char* dest, const char* src)
{//用临时变量保存 因为之后dest和src的指针指向有变 无法直接返回指向首元素的指针char* ret dest;assert(dest ! NULL);assert(src ! NULL);while ((*dest *src)){//在while的循环条件中就完成了拷贝//所以这里用空语句即可;}return ret;
}int main()
{char str1[] fallzzzzz;char str2[20];char* tmp my_strcpy(str2, str1);printf(str2 %s\n, tmp);return 0;
}strcat的使用和模拟实现
函数的原型 char * strcat ( char * destination, const char * source ); 1.源字符串必须以 ‘\0’ 结束。 2.目标字符串中也得有 ‘\0’ 否则没办法知道追加从哪里开始。 3.⽬标空间必须有⾜够的⼤能容纳下源字符串的内容。 4.⽬标空间必须可修改,即目标字符串不为const类型。 该函数为追加字符串函数能够在一个字符串之后追加上另一个字符串
strcat的模拟实现
char* my_strcat(char* dest, const char* src)
{char* ret dest;assert(dest ! NULL);assert(src ! NULL);while (*dest) //遇到\0停止{dest;}while ((*dest *src)){;}return ret;
}
int main()
{char str1[] hello ;char str2[] the ;char str3[] fallzzzzz ;char str4[50];strcpy(str4, str1); //先将str1拷贝到str4目的是让目标字符串中有\0my_strcat(str4, str2);my_strcat(str4, str3);puts(str4); //将字符串以‘\0’结束的字符序列输出return 0;
}strcmp的使用和模拟实现
函数的原型 int strcmp ( const char * str1, const char * str2 ); 该函数为字符串的大小比较函数比较的是两个字符串中对应位置上的字符的ASCII码值的大小。 第⼀个字符串大于第⼆个字符串则返回大于0的数字 第⼀个字符串等于第⼆个字符串则返回0 第⼀个字符串小于第⼆个字符串则返回小于0的数字
strcmp的模拟实现
int my_strcmp(const char* str1, const char* str2)
{int ret 0;assert(str1 ! NULL);assert(str2 ! NULL);while (*str1 *str2){if (*str1 \0) {//在*str1 *str2的条件下其中一个为\0那么另一个也为\0//两个都访问到\0那么就说明这两个字符串是相等的所以跳出循环 返回0return 0;} str1;str2;}return *str1 - *str2; //将ASCII码值相减的结果作为返回值 就能通过该字符ASCII码值的大小关系比较出字符串的大小关系
}
int main()
{char* str1 hello;char* str2 fallzzzzz;int tmp my_strcmp(str1, str2);printf(%d, tmp);return 0;
}