字符串和内存函数(第二部分)

这篇博客详细介绍了C语言中的字符分类函数,如iscntrl、isspace、isdigit等,以及内存操作函数如memcpy、memmove、memset和memcmp。文章通过实例演示了这些函数的用法,并强调了在内存操作中的注意事项,例如memset用于按字节初始化内存,memcmp进行逐字节比较。
摘要由CSDN通过智能技术生成

五.字符分类函数(常用内置函数)

函数

如果他的参数符合下列条件就返回真

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(注意看内存数据):

  

——————————————————————————————————————————————————————————————————————————————————————

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值