怎么样创建个人网站,为什么 要建设网站,网站建设的费用需求,四库一平台怎么查建造师业绩前言 在编程的过程中#xff0c;我们经常要处理字符和字符串#xff0c;为了⽅便操作字符和字符串#xff0c;C语⾔标准库中提供了⼀系列库函数~ 欢迎关注个人主页#xff1a;逸狼 创造不易#xff0c;可以点点赞吗~ 如有错误#xff0c;欢迎指出~ 目录
前言
1. 字符分… 前言 在编程的过程中我们经常要处理字符和字符串为了⽅便操作字符和字符串C语⾔标准库中提供了⼀系列库函数~ 欢迎关注个人主页逸狼 创造不易可以点点赞吗~ 如有错误欢迎指出~ 目录
前言
1. 字符分类函数
例字母大小分类
例字母大小写转换
字符串相关函数
strlen的函数使用和模拟实现
strlen的函数使用
strlen的模拟实现
法1
法2
法3递归
strcpy的函数使用和模拟实现
strcpy的函数使用
strcpy的模拟实现
不返回
优化
返回目标空间的起始地址
strcat的函数使用和模拟实现
strcat的函数使用
strcat的模拟实现
strcmp的函数使用和模拟实现
strcmp的函数使用 strcmp的模拟实现 1. 字符分类函数 C语⾔中有⼀系列的函数是专⻔做字符分类的使⽤这些函数需要包含的头⽂件是 ctype.h 例字母大小分类 判断大小写 例字母大小写转换 大写转小写 字符串相关函数
字符串相关函数要包含头文件string.h
strlen的函数使用和模拟实现 strlen的函数使用
用于计算字符串的个数
strlen函数返回的是在字符串中 \0 前⾯出现的字符个数不包 含 \0 )。参数指向的字符串必须要以 \0 结束。注意函数的返回值为size_t是⽆符号的 strlen的模拟实现
法1
#includestdio.h
#includeassert.h
size_t my_strlen(const char*str)
{size_t count 0;//断言str不为空指针assert(str ! NULL);while (*str){count;str;}return count;
}int main()
{char arr[] abcdef;size_t len my_strlen(arr);printf(%zd\n, len);return 0;
}
法2
#includestdio.h
#includeassert.h//strlen的模拟实现
size_t my_strlen2(char* str)
{assert(str ! NULL);char* start str;while (*str){str;}return str - start;
}
法3递归
size_t my_strlen3(char* str)
{assert(str ! NULL);if (*str){return 1my_strlen3(str1);}else{return 0;}
} strcpy的函数使用和模拟实现 strcpy的函数使用
用于拷贝字符串 源字符串必须以 \0 结束。 会将源字符串中的 \0 拷⻉到⽬标空间。⽬标空间必须⾜够⼤以确保能存放源字符串。⽬标空间必须可修改 strcpy的模拟实现
不返回
#includestdio.h
void my_strcpy(char* dest, const char* src)
{while (*src)//遇到\0就停下跳出while循环{assert(dest ! NULL);assert(src ! NULL);//一个个字节从头开始拷贝*dest *src;dest;src;}*dest *src;//最后把\0拷贝过去
}
int main()
{char arr1[20] xxxxxxxxxxx;char arr2[] hello;my_strcpy(arr1, arr2);printf(%s\n, arr1);return 0;
}
优化
#includestdio.h
//优化
void my_strcpy(char* dest, const char* src)
{//若有一个为空指针assert即为假assert(dest src);//先赋值拷贝地址再//最后\0拷贝过去后整个表达式为0跳出循环while (*dest*src){;//空语句}
}
返回目标空间的起始地址
char* my_strcpy(char* dest, const char* src)
{assert(dest src);//若有一个为空指针assert即为假//先赋值拷贝地址再//最后\0拷贝过去后整个表达式为0跳出循环char* ret dest;//保留目标空间的起始位置while (*dest*src){;//空语句}return ret;
}
strcat的函数使用和模拟实现 strcat的函数使用
用于追加字符串
源字符串必须以 \0 结束。⽬标字符串中也得有 \0 否则没办法知道追加从哪⾥开始。⽬标空间必须有⾜够的⼤能容纳下源字符串的内容。⽬标空间必须可修改。 strcat的模拟实现
注意以下实现的my_strcat函数不可以自我追加\0会被覆盖造成死循环越界访问
#includestdio.h
#includeassert.h
void my_strcat(char* dest, const char* src)
{assert(dest src);//保留目标空间的起始位置char* ret dest;//1.找到目标空间的\0while (*dest){dest;}//2.在dest后面拷贝src的内容while (*dest *src){;}}
int main()
{char arr1[20] hello ;char arr2[] world;my_strcat(arr1, arr2);printf(%s\n, arr1);return 0;
}
strcmp的函数使用和模拟实现 strcmp的函数使用
用于字符串比较⽐较两个字符串中对应位置上字符ASCII码值的⼤⼩不是比长度。
第⼀个字符串⼤于第⼆个字符串则返回⼤于0的数字
第⼀个字符串等于第⼆个字符串则返回0
第⼀个字符串⼩于第⼆个字符串则返回⼩于0的数字 strcmp的模拟实现
#includestdio.h
int my_strcmp(const char* s1, const char* s2)
{while (*s1 *s2){if (*s1 \0)return 0;s1;s2;}//return *s1-s2;if (*s1 *s2)return 1;elsereturn -1;
}int main()
{int ret my_strcmp(abcdefg, abcdefg);printf(%d\n, ret);return 0;
}