关于C语言的字符函数、字符串函数、内存函数的总结

本文章针对以下所学知识进行一个简短总结。

字符函数

字符串函数

内存函数

一、字符函数

1.字符分类函数

顾名思义,就是用来分类字符的函数,判断一个字符是什么类型的。
其使用头文件 <ctype.h>
字符分类函数如下:

函数参数为以下条件:返回非0;反之,返回0。
iscntrl任何控制字符
isspace空白字符
isdigit十进制的数字
isxdigit十六进制的数字
islower小写字母
isupper大写字母
isalpha字母(不分大小写)
isalnum字母或数字(不分大小写)
ispunct标点
isgraph图形字符
isprint可打印字符

2.字符转换函数

字符转换函数用于转换字母的大小写。

int tolower ( int c ); //将参数传进去的⼤写字⺟转⼩写
int toupper ( int c ); //将参数传进去的⼩写字⺟转⼤写

二、字符串函数

均包含头文件 <string.h>

1.长度不受限制的字符串函数,一直到 \0

1.strlen函数

strlen函数 是用来求一个字符串长度,其从给定的字符开始,找到\0结束。

size_t strlen ( const char * str );

注意:

1.strlen函数统计的时 ‘\0’ 之前的字符个数。
2.参数指向的字符串必须要以 ‘\0’ 结束。
3.返回值是无符号的 ‘size_t’。

2.strcpy函数

strcpy函数是用来拷贝字符串的。

char* strcpy(char * destination, const char * source );

注意:

1.源字符串必须以 '\0' 结束。
2.会将源字符串中的 '\0' 拷⻉到⽬标空间。
3.⽬标空间必须⾜够⼤,以确保能存放源字符串。
4.⽬标空间必须可修改。

3.strcat函数

strcat函数 是用来将两个字符串连接到一起的,即字符串追加。

char * strcat ( char * destination, const char * source );

注意:

1.源字符串必须以 '\0' 结束。
2.⽬标字符串中也得有 \0 ,否则没办法知道追加从哪⾥开始。
3.⽬标空间必须有⾜够的⼤,能容纳下源字符串的内容,否则程序崩溃。
4.⽬标空间必须可修改。

4.strcmp函数

strcmp函数是专用用来比较字符串大小,比较的不是字符串长度,而是对应位置上的字符大小。

第⼀个字符串⼤于第⼆个字符串,则返回⼤于0的数字
第⼀个字符串等于第⼆个字符串,则返回0
第⼀个字符串⼩于第⼆个字符串,则返回⼩于0的数字
int strcmp ( const char * str1, const char * str2 );

2.长度受限制的字符串函数

1.strncpy函数

strncpy函数同strcpy函数,但多一个参数。

char * strncpy ( char * destination, const char * source, size_t num );

注意:

拷⻉num个字符从源字符串到⽬标空间。
如果源字符串的⻓度⼩于num,则拷⻉完源字符串之后,在⽬标的后边追加0,直到num个。

2.strncat函数

strncat函数同strcat函数,但多一个参数。

 char * strncat ( char * destination, const char * source, size_t num );

注意:

将source指向字符串的前num个字符追加到destination指向的字符串末尾,再追加⼀个 \0 字符)。
如果source 指向的字符串的⻓度⼩于num的时候,只会将字符串中到\0 的内容追加到destination指向的字符串末尾。

3.strncmp函数

strncmp函数,同strcmp函数,⽐较str1和str2的前num个字符。
如果相等就继续往后⽐较,最多⽐较num个字⺟,如果提前发现不⼀样,就提前结束,⼤的字符所在的字符串⼤于另外⼀个。如果num个字符都相等,就是相等返回0。

int strncmp ( const char * str1, const char * str2, size_t num );

3.strstr函数、strtok函数、strerror函数、perror函数

1.strstr函数

strstr函数用于找子字符串:在一个字符串找另外一个字符串是否出现过。

char * strstr ( const char * str1, const char * str2);

在str1中 找str2 这个字符串,第一次出现的位置,如果找到,就返回这个第一个出现的起始地址,如果找不到,就返回NULL。

2.strtok函数

char * strtok ( char * str, const char * sep);

注意:

sep参数指向⼀个字符串,定义了⽤作分隔符的字符集合
第⼀个参数指定⼀个字符串,它包含了0个或者多个由sep字符串中⼀个或者多个分隔符分割的标记。
strtok函数找到str中的下⼀个标记,并将其⽤ \0 结尾,返回⼀个指向这个标记的指针。
strtok函数的第⼀个参数不为 NULL ,函数将找到str中第⼀个标记,strtok函数将保存它在字符串中的位置。
strtok函数的第⼀个参数为 NULL ,函数将在同⼀个字符串中被保存的位置开始,查找下⼀个标记。
如果字符串中不存在更多的标记,则返回 NULL 指针。

3.strerror函数

strerror函数把参数部分错误码对应的错误信息的字符串地址返回来。

char* strerror ( int errnum );

4.perror函数

perror函数直接将错误信息打印出来。

void perror( const char* str ); 

三、内存函数

针对内存块来处理的函数。

1.memcpy函数

memcpy函数即内存拷贝函数。

 void * memcpy ( void * destination, const void * source, size_t num );

注意:

1.从source的位置开始向后复制num个字节的数据到destination指向的内存位置。
2.这个函数在遇到 '\0' 的时候并不会停下来,所以目标空间必须可修改且足够大。
3.memcpy函数 不负责重叠内存拷贝,只负责不重叠的内存,不能自己传自己,结果是未知的。

2.memmove函数

 void * memmove ( void * destination, const void * source, size_t num );

注意:

1.和memcpy的差别就是memmove函数处理的源内存块和⽬标内存块是可以重叠的。
2.如果源空间和⽬标空间出现重叠,就得使⽤memmove函数处理。

c语言标准规定memcpy 只要能实现不重叠的拷贝就行,重叠拷贝的交给 memmove。
但我们发现vs上的库函数memcpy也能实现重叠内存的拷贝,不能保证别的编译器能成功。
所以重叠不重叠都用 memmove 最为合适,懒人福音。

3.memset函数

memset函数用来设置内存,将内存中的值以字节为单位设置成想要的内容。

void * memset ( void * ptr, int value, size_t num );

4.memcmp函数

memcmp函数类似 strcmp函数,但比较的是内存块。

int memcmp ( const void * ptr1, const void * ptr2, size_t num );

注意:

⽐较从ptr1和ptr2指针指向的位置开始,向后的num个字节
返回值同strcmp函数。
  • 23
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值