五.字符分类函数(常用内置函数)
函数 | 如果他的参数符合下列条件就返回真 |
iscntrl | 任何控制字符 |
isspace | 空白字符:空格' ',换页'\f',换行'\n',回车'\r',制表符'\t'或者垂直制表符'\v' |
isdigit | 十进制数字0~9 |
isxdigit | 十六进制数字,包括所有十进制数字,小写字母a~f,大写字母A~F |
islower | 小写字母a~z |
isupper | 大写字母A~Z |
isalpha | 字母a-z或A~Z |
isalnum | 字母或者数字,a~z,A~Z,0~9 |
ispunct | 标点符号,任何不属于数字或者字母的图形字符(可打印) |
isgraph | 任何图形字符 |
isprint | 任何可打印字符,包括图形字符和空白字符 |
下面我们拿以上一些函数举几个例子:
isdigit
int isdigit(int c); //参数接收的是ASCII码值
头文件是:#include<ctype.h>
isdigit 如果是数字字符0~9的话返回一个非0值,如果不是数字字符则返回0
———————————————————————————————————————————
其他的一些函数(注意看注释):
———————————————————————————————————————————
大小写转换函数:
int tolower(int c); //返回对应的小写字母
int toupper(int c); //返回对应的大写字母
——————————————————————————————————————————————————————————————————————————————————————
六.内存操作函数
。 memcpy
。 memmove
。 memset
。 memcmp
-
memcpy(拷贝数据)
void* memcpy(void* dest,const void* src,size_t count); //将src中的内容拷贝到的dest中,由count决定拷贝的数量
头文件:#include<string.h> or <memory.h>
——————————————————————————————————————————
模拟实现memcpy
——————————————————————————————————————————————————————————————————————————————————————
memmove(实现重叠内存拷贝)
void* memmove(void* dest,const void* src,size_t count);
头文件:#include<string.h>
这个函数可以实现自己给自己拷贝的效果:
——————————————————————————————————————————
模拟实现memmove
—————————————————————————————————————————————————————————————————————————————————————
memcmp(内存比较)
int memcmp(const void* ptr1,const void* ptr2,size_t num); //num是比较字节的个数
头文件:#include<string.h>
- 如果ptr1指向的内容 < ptr2指向的内容,返回<0的数字
- 如果ptr1指向的内容 = ptr2指向的内容,返回 0
- 如果ptr1指向的内容 > ptr2指向的内容,返回>0的数字
使用方法:
注意:memcmp是一个字节一个字节的往过比较,我们可以看到在内存中arr1和arr2都是小端存储,第17个字节还是相等的,到了第18个字节就是已经可以比较出大小了。
________________________________________________________________________________________________________________________________________________________
memset(内存设置)
void* memset(void* dest,int c, size_t count); //dest是目的地,c是设置的字符,count是设置多少个字节。
头文件是:#include<string.h>
使用方法(设置内存中的值):
注意!注意!!:memset是以字节为单元来初始化内存单元的,当我想将arr数组中每个字节设置成0的时候不是将arr数组中每个元素变成0,而是在内存中将每个元素的每个字节设置成0.
内存中是这样的:
为了方便大家理解,我们再举个例子,比如我们想将arr数组中的每个字节设置成6(注意看内存数据):
——————————————————————————————————————————————————————————————————————————————————————