字符分类函数
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 任何可打印字符,包括图形字符和空白字符
以上的字符分类函数 如果不满足条件会返回“0”,如果满足 会返回非0数
例如:
#include<stdio.h>
#include<ctype.h>
int main()
{
int ret = islower('a');
printf("%d\n",ret);
return 0;
}
字符转换函数
int tolower 将字符转换为小写
int toupper 将字符转换为大写
如果要转换的满足条件 则不变
内存相关的函数
memcpy和strcpy很相似 都能实现拷贝功能 但是strcpy只限拷贝字符串 但memcpy可以拷贝任意类型数据所以memcpy的参数 都是以指针void*类型来接受数据
模拟实现memcpy
void* my_memcpy(void* dest, const void* scr, size_t sz)
{
assert(dest && scr);
while (sz--)
{
*(char*)dest = *(char*)scr;
dest = (char*)dest + 1;
scr = (char*)scr + 1;
}
}
注意my_mymcoy要在不重叠的内存下进行拷贝 当我们发现使用vs2022的环境下 会发现mymcoy在重叠的内存下也可以拷贝 在重叠的内存下拷贝应该用mymmove进行拷贝
将“hello world” 中“wor”改为“x”
int main()
{
char arr[20] = "hello world";
memset(arr + 6, 'x', 3);
printf("%s", arr);
return 0;
}
memset是以字节为单位设置内存的