字符函数字符串函数和内存函数
一,字符函数
c语言中常用的字符函数大致可以分为两类:字符分类函数和字符转换函数,两类函数在使用前都要引入标准库ctype.h。
1.字符分类函数
这一类函数都是判断一个字符是否为什么类型的值,是就返回一个非零值,不是则返回零。所以这类函数的返回类型为int,参数类型为char
iscntrl 判断是否是控制字符
isspace 判断是否是空白字符 ' ' '\f' '\n' '\r' '\t' '\v'
isdigit 判断是否是十进制数字
isxdigit 判读是否是十六进制数字
islower 判断是否是小写字母
isupper 判断是否是大写字母
isalpha 判断是否是字母
isalnum 判断是否是字母或数字
ispunct 判断是否是标点
isgraph 判断是否是图形字符
isprint 判断是否是可打印的字符
2.字符转换函数
这里就简单介绍两个函数;
tolower函数:参数是int 类型用于接收字符的ASCII码值,如果这个值在大写字母对应的码范围类就返回它对应小写字母的码。
toupper函数:参数是int 类型用于接收字符的ASCII码值,如果这个值在小写字母对应的码范围类就返回它对应大写字母的码。
下面是示例:

二,字符串函数
这类函数都要使用标准库<string.h>
1.strlen函数
strlen函数参数是字符指针,返回值是无符号整型(size_t),它是用于计算字符串长度
有三种方法可以模拟实现:
计数器法:

指针—指针法

递归法

2.strcpy函数
字符串拷贝函数,返回值为char*,参数为char*和const char*,前者是目标拷贝字符数组地址指针,后者是源头地址指针,返回目标地址。
模拟实现:

3.strcat函数
字符串的拼接函数,返回值是char*,参数值为char*和const char*,
返回值是拼接好的字符串所在字符数组的首地址,参数前者是目标字符数组的首地址,拼接工作将在这个字符数组的基础之上进行,后者是待拼接数组的地址。
模拟实现:

4.strcmp函数
是字符串比较函数,比较的原理是从两字符串起始端开始,逐一比较字符,相同则跳到下一个,直到不同的字符,比较ASCII码值。第一个字符串的字符较大返回一个大于零的值,第二个字符串的字符较大返回一个小于零的值,一样大且都比较到了字符串的末尾,就返回零:

具体用法见函数的模拟:

5.strncpy函数
与strcpy函数相近,只不过多了一个int类型的参数,表示拷贝字符的个数。不会自动添加‘\0’,并且如果目标字符串长度不足指定的个数,就会自动在后面补0,一直到达指定长度。
6.strncat函数
与strcat函数相近,多的一个int类型的参数,表示从原字符串中提取指定参数个字符组成字符串追加到目标字符串结尾再添加一个'\0'。
7.strncmp函数
与strcmp函数的比较方式相同,多余的一个int类型参数表示最多比较到每个字符串的num个字符。
8.strstr函数
是在字符串中找字符串,两个参数都为const char*,第一参数存放较长字符串的地址,第二个参数存放较短字符串的地址,返回值是较长字符串中第一次出现较短字符串的位置地址。

9.strtok函数
strtok 是C语言字符串分割函数,按指定分隔符拆分字符串,会修改原字符串,线程不安全。
char *strtok(char *str, const char *delim)
首次调用传原串 str ,后续传 NULL ,继续分割同一段字符串
分隔符 delim 是字符集合(如 " ,-" 代表空格、逗号、横杠都是分隔符)
会把原串中分隔符替换为 \0 ,返回当前分割出的子串首地址
一次只返回一个子串,循环调用直到返回 NULL 结束
使用代码演示:
三,内存函数
标准库为<string.h>
1.memcpy函数

内存拷贝函数:将某区域内存的数据拷贝到另一内存区域。参数有三:第一个表示目的地址,第二个表示待拷贝的地址,第三个表示待拷贝的字节数,拷贝时遇见‘\0’不会停止拷贝,拷贝区域和待拷贝区域尽量不重叠,重叠最好使用memmove。
模拟实现:

2.memmove函数

和memcpy函数类似,memmove函数是把某块内存中的数据转移到另一块内存区域,但是使用memmove函数来处理原内存块和目标内存块重叠的情况更安全。函数参数有三:目标内存块起始地址,原内存块起始地址,待转移数据的大写(单位字节)
模拟实现:

3.memset函数

将一块内存块的所有值设置为同一字符,参数有三,分别表示:待设值的代码块起始地址,待设值的ASSII码值(也可以传字符),代码块的大小(单位:字节)
演示:

4.memcmp函数

逐字符比较两内存块中的特定数目的字符,参数有三,分别表示两内存块的起始地址和比较的字符个数。最后返回值及比较原则与strncmp函数类似.
完!!!
更多推荐

所有评论(0)