有专门做英文字幕的网站吗,在门户网站中营销者通过制作什么,精灵网站建设,vps怎么建多个网站1.strlen函数1.1 strlen函数的原型和使用说明函数原型#xff1a;size_t strlen(const char *str)#xff08;size_t返回值的是无符号的#xff09;参数说明#xff1a;指向以null结尾的字符串的指针#xff08;参数指向的字符串必须以‘\0’结束#xff09;返回值…1.strlen函数1.1 strlen函数的原型和使用说明函数原型size_t strlen(const char *str)size_t返回值的是无符号的参数说明指向以null结尾的字符串的指针参数指向的字符串必须以‘\0’结束返回值字符串的长度不包括null终止符1.2 strlen函数的使用#include stdio.h #include string.h int main() { char str[] Hello, World!; size_t length strlen(str); printf(Length: %zu\n, length); return 0; }1.3 strlen函数的模拟实现下面我们来模拟实现一下strlen函数计算器方式首先我们定义一个变量count来计算每走一步count1同时地址str1直到*str 遇到‘\0’跳出循环从而得到count值size_t my_strlen(const char *str) { size_t count 0; while (*str ! \0) { count; str; } return count; }2 strcpy函数的使用和模拟实现标准库函数strcpy的作用字符串复制函数原型char *strcpy(char *dest, const char *src)返回值与参数说明目标地址dest源地址src源字符串必须以‘\0’结束。strcpy函数会将源字符串中的‘\0’拷贝到目标字符串中。必须确保dest有足够空间容纳src包括\0否则导致缓冲区溢出。char src[] Hello; char dest[10]; strcpy(dest, src); // dest现在包含Hello2.1 strcpy函数的模拟实现char *my_strcpy(char *dest, const char *src) { char *ret dest; while (*src ! \0) { *dest *src; } *dest \0; // 添加终止符 return ret; }while循环函数中的内容还可以换一个写法char *my_strcpy(char *dest, const char *src) { char *ret dest; while (*src ! \0) { *dest*src dest; src; } *dest \0; // 添加终止符 return ret; }3.strcat函数的使用和模拟实现函数原型为char *strcat(char *dest, const char *src);参数dest为目标字符串缓冲区需确保有足够空间src为待追加的源字符串。返回值返回目标字符串的起始地址。3.1 strcat函数的使用#include stdio.h #include string.h int main() { char dest[20] Hello; char src[] World!; strcat(dest, src); // 输出: Hello World! printf(%s\n, dest); return 0; }这里打印目标函数字符串函数时只需传一个起始地址就可以了它会顺着起始地址往后打印直到遇到‘\0’结束。3.2 strcat函数的模拟实现char *my_strcat(char *dest, const char *src) { char *ptr dest; //先把目标字符串的起始地址放到ptr中因为下面指针计算会导致目标起始地址发生改变 while (*dest ! \0) dest; // 找到目标字符串末尾下一步开始追加字符 while (*src ! \0) { *dest*src; dest; src; } // 逐字符追加直到遇到源字符串的‘\0’结束 *dest \0; //这里的dest经过上述计算dest的地址已经改变最后以\0收尾 return dest; }遍历dest至末尾将src的字符逐个拷贝到dest末尾添加字符串终止符\0。4strcmp函数的使用和模拟实现trcmp函数的基本介绍标准库函数strcmp的作用比较两个字符串函数原型int strcmp(const char *str1, const char *str2);返回值含义返回0表示字符串相等返回值大于0表示str1大于str2返回值小于0表示str1小于str24.1 strcmp函数的使用#include stdio.h #include string.h int main() { char str1[] hello; char str2[] world; int result strcmp(str1, str2); //这里比较的是字符的ASCLL码值如果第一个字符就已经比较出大小那么后面的字符比较是无意义的。 printf(result: %d\n, result); return 0; }4.2 strcmp函数的模拟实现int my_strcmp(const char *str1, const char *str2) { asssert(str1 str2); //保证指针不为空指针利用assert断言需包含头文件#includeassert.h while (*str1 (*str1 *str2)) { str1; str2; } //*str1确保str1没有遇到‘\0’没有到达字符串末尾 //*str1*str2确保当前比较的字符相等 return *(unsigned char *)str1 - *(unsigned char *)str2; //因为字符串的长度是无符号的所以需要先强制类型转换为无符号类型再解引用。 }这里有一个疑惑就是为什么不保证str2不遇到‘\0’呢其实上面的条件已经隐含了对str2的检查。下面我们分两种情况来看。情况一str2先达到末尾*str2‘\0’如果str2先结束那么*str2的值就是0此时要满足*str1*str2就必须让*str1也等于0.这意味着str1也必须同时到达末尾。如果str1也到达末尾*str10那么 *str1 *str1*str2就不成立循环也就会停止。如果str1还没到达末尾*str1‘\0’那么*str1*str2这个条件就不成立循环就会终止情况二str1先到达末尾*str1‘\0’此时*str1的值就是0*str1 *str1*str2这个条件就直接判定为假终止循环5.strstr函数的使用和模拟实现strstr是C语言标准库中的一个字符串查找函数用于在主字符串中查找子字符串的首次出现位置。char *strstr(const char *str1, const char *str2);5.1 strstr函数的使用#include stdio.h #include string.h int main() { const char *str1 Hello, world!; const char *str2 world; char *result strstr(str1str2); if (result) { printf(找到了: %ld\n, result -str1); } else { printf(没找到\n); } return 0; }5.2 strstr函数的模拟实现char *my_strstr(const char *str1, const char *str2) { if (*str2 \0) { return (char *)str1; } //如果子字符串为0就直接返回主字符串的起始地址即‘\0’ for (; *str1 ! \0; str1) { const char *p1 str1; const char *p2 str2; while (*p1 *p2 *p1 *p2) { p1; p2; } if (*p2 \0) { return (char *)str1; } } return NULL; }