字符串函数和字符函数

目录

字符串函数

长度不受限制的字符串函数

strlen函数

strcpy函数

strcat函数

strcmp函数

长度受限制的字符串函数

strncpy函数

strncat函数

strncmp函数

其他

strstr函数

strtok函数

strerror函数

字符函数

字符分类函数

字符转换函数


字符串函数

长度不受限制的字符串函数

strlen函数

库函数,用来求字符串\0之前的长度,使用时包含头文件#include<string.h>

返回的是无符号数,两个无符号数相减算出来也是无符号的,除非强转

模拟实现:

1.计数器

2.递归

3.指针-指针

strcpy函数

用来完成字符串拷贝,包含\0

目标空间必须足够大,同时目标空间必须可修改

(源头,目的地)

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

模拟实现:

strcat函数

字符串追加

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

先找到arr1末尾,也就是\0,再把arr2的内容复制过去

注意:

1、要保证目标空间足够大,且可修改

2、目标空间要有\0

3、源空间也要有\0,在拷贝时将源字符串中的\0也要拷贝进去

4、最好不要用这个函数自己给自己追加,可以使用strncat

模拟实现:

strcmp函数

字符串比较,不是比较长度,而是比较对应位置上字符的大小即ASCII码值

模拟实现:

这样也可以

长度受限制的字符串函数

strncpy函数

strncat函数

会追加\0

strncmp函数

其他

strstr函数

在字符串中找字符串

第一行是C,第二行是C++

在str1中找str2第一次出现的位置,如果没有出现,就返回一个空指针NULL

模拟实现:

这个模拟实现只是一种暴力求解方式,不够高效,可以参考KMP算法

strtok函数

切割字符串

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

sep参数是分隔符的字符串,str是包含了0个或多个由分隔符连接的字符串

strtok函数找到str中的下一个标记,并将其改为\0,返回指向这个标记的指针,因为strtok会改变字符串,所以使用strtok函数切分是一般都是使用临时拷贝的内容

当strtok函数的第一个参数不为NULL,函数将找到str中的第一个标记,并保存其在字符串内的位置

当strtok函数的第一个参数为NULL,函数将在同一个字符串中保存的位置开始,查找下有一个标记

如果字符串中不存在更多的标记,则返回NULL指针

strerror函数

char* strerror(int errnum)

是将错误码翻译成错误信息,返回错误信息的字符串的起始地址

使用库函数,或者正规的软件设计都会设置错误码,类似于404

C语言中使用库函数的时候,如果发生错误,就会将错误码放在error的变量中,error是一个全局变量可以直接使用

例子:

perror

直接打印错误信息,相当于printf+strerror

字符函数

字符分类函数

函数              如果他的参数符合下列条件就返回真
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             任何可打印字符,包括图形字符和空白字符

字符转换函数

int tolower(int c)大写转小写

int toupper(int c)小写转大写 

规定用int去接收

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值