c语言中处理字符串的一些常用函数

前言

本文将会介绍一些在编写程序的过程中,处理字符串非常实用的系统函数。

strlen()函数

函数作用

计算字符串的有效长度,将其作为返回值返回。

函数原型

size_t strlen( const char *str );

返回值:size_t为无符号长整型。

参数:待计算的字符串。

头文件:<string.h>

注意

1.strlen函数不会计算\0之后的数据,所以返回的字符串的长度只到\0位置(不包含\0)。

2.若字符串未初始化,strlen函数检测不到\0结束标记,就会在字符串申请的地址后面一直找,直到找到\0才会作输出,此时就会输出错误答案。

3.由于返回值是无符号整型,若对返回值直接进行减法来判断两个字符串的长度大小,所得出的结果一定是非负整数,并不能通过此方法进行判断。

strchr()函数

函数作用

用来在字符串中查找某字符首次出现的位置。

函数原型

char *strchr(const char *str, int val);

返回值:如果找到指定的字符则返回该字符所在地址,若未找到则返回 NULL。

参数1:str为要查找的字符串。

参数2:val为要查找的字符。

头文件:<string.h>

注意

1.字符串 str 的结束标志'\0'也会被纳入检索范围,所以 str 的最后一个字符也可以被定位。

2.返回的地址是字符串在内存中的地址加上所搜索的字符在字符串位置。若字符在字符串中首次出现的位置为 i,那么返回的地址为 str + i。

strrchr()函数

函数作用

用来在字符串中查找某字符最后一次出现的位置。

函数原型

​char * strrchr (const char *str, int ch);

返回值:如果找到指定的字符则返回该字符所在地址,若未找到则返回 NULL。

参数1:str为要查找的字符串。

参数2:ch为要查找的字符。

头文件:<string.h>

注意

该函数的注意点与strchr()函数相同。

strstr()函数

函数作用

用来查找一个字符串在另一字符串中第一次出现的位置。

函数原型

char *strstr(const char *str,const char *substr);

返回值:若找到则返回寻找到的字符串的首地址,若未找到则返回NULL。

参数1:str为查找范围的字符串。

参数2:substr为查找目标字符串。

头文件:<string.h>

注意

1.strstr(str,substr)返回值随str变化而变化,因此在改变str后strstr函数的返回的地址可能改变。

 strcpy()函数

函数作用

将一个字符串的内容复制到其他字符串(空间地址)中。

函数原型

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

返回值:目标字符串的首地址。

参数1:dest为目标字符串的首地址。

参数2:source为被复制的字符串的首地址。

头文件:<string.h>

注意

1.被复制字符串必须以 '\0'结束,该函数不遇到 '\0' 拷贝就不会停止,会导致越界访问。

2.目标字符串空间必须足够大,以确保能放被复制字符串。

3.目标字符串的内容必须是可更改的,确保能正常写入。

strncpy()函数

函数作用

将一个字符串从首地址开始的前n个字节的内容复制到其他字符串(空间地址)中。

函数原型

char * strncpy(char * dest,const char * source,size_t count);

返回值:目标字符串的首地址。

参数1:dest为目标字符串的首地址。

参数2:source为被复制的字符串的首地址。

参数3:count为需要复制的字节数。

头文件:<string.h>

注意

1.与strcpy函数相同。

2.如果count<source的长度,只是将source的前count个字符复制到dest的前count个字符地址,不自动添加'\0',需要手动添加'\0'作为字符串结尾。

3.如果count>source的长度,则以NULL填充dest直到复制完count个字节。

strcmp()函数

函数作用

用来对两个字符串进行比较。

函数原型

int strcmp( const char * str1, const char * str2 );

返回值:若两个字符串相同则返回0,若str1>str2则返回1,若str1<str2则返回-1。

参数1:str1为待比较的其中一个字符串。

参数2:str2为待比较的另一个字符串。

头文件:<string.h>

注意

该函数会从字符串的首位置开始比较字符若相同则继续比较下一位,若不相同则比较该位置字符ASCLL码的大小。若str1中该位字符的ASCLL码大于str2中该位字符的ASCLL码,则返回1,若str1中该位字符的ASCLL码小于str2中该位字符的ASCLL码,则返回-1。若一直到字符串的最后一位,既'\0'处都相同,则返回0。

strncmp()函数

函数作用

用来对两个字符串的前n位字符进行比较。

函数原型

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

返回值:若两个字符串相同则返回0,若str1>str2则返回1,若str1<str2则返回-1。

参数1:str1为待比较的其中一个字符串。

参数2:str2为待比较的另一个字符串。

参数3:count为比较的字符串的字节数。

头文件:<string.h>

注意

与strcmp函数相同。

strcat()函数

函数作用

用来将两个字符串进行拼接。

函数原型

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

返回值:拼接完成后的字符串首地址。

参数1:dest为拼接的字符串,既拼接内容的前端部分。

参数2:source为待拼接的字符串,既拼接内容的后端部分。

头文件:<string.h>

注意

1.该函数会将source的内容拼接到dest字符串之后。

2.确保dest字符串的空间足够大,能够装下source的内容,以避免访问越界。

3.拼接过程中,dest字符串原本结尾处的'\0'会被覆盖,在完成拼接后的字符串的结尾处自动添加'\0'结尾。

strncat()函数

函数作用

用来将一个字符串的前n位拼接到另一个字符串之后。

函数原型

char * strncat(char * dest,const char * source,size_t count);

返回值:拼接完成后的字符串首地址。

参数1:dest为拼接的字符串,既拼接内容的前端部分。

参数2:source为待拼接的字符串,既拼接内容的后端部分。

参数3:count为需要拼接的字节数。

头文件:<string.h>

注意

与strcat函数相同。

strtok()函数

函数作用

用来对字符串进行分割。

函数原型

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

返回值:分割后的字符串首地址。

参数1:str为需要分割的字符串。

参数2:delim为分割的标志符。

头文件:<string.h>

注意

1.strtok函数直接在原字符串上进行操作,所以要求参数1必须可读写。

2.在对一个长字符串分割时,第一次调用时,strtok函数的第一个参数传入要分割的字符串,而后面再次调用该函数时,strtok函数的参数1传入NULL,该函数会默认使用上一次未分割完的字符串的未分割的起始位置作为本次分割的起始位置,直到分割结束为止。

3.strtok函数在对字符串进行分割时,是直接将字符串中的分割标识符替换为'\0'。

4.参数2的分割标识符可以传入多个,可以把delim理解为分隔符的集合。

5.如果要分割的字符串首字符为分隔符,那么strtok函数会忽略第一个字符,直接从下一个分隔符算起,并且将首字符从第一个字符串中移除。

atoi()函数

函数作用

将字符串内容中的整数转换成整型。

函数原型

int atoi(const char *_Str);

返回值:转换后的整型。

参数:待转换的字符串。

头文件:<stdlib.h>

注意

1.转换后的值不可超出int可表示的范围

2.函数会丢弃空白字符,找到第一个非空白字符,从这个字符开始,取一个加号或者减号,取此后的十进制数字,将他们转为int类型作为返回值。

3.若字符串在整数的字符后包含其他字符,则忽略这些字符,将此前的整数部分进行转换。

4.若为空字符串或无效字字符串,则返回0。

atol()函数

函数作用

将字符串内容中的整数转换成长整型。

函数原型

long atol(const char * str);

返回值:转换后的长整型。

参数:待转换的字符串。

头文件:<stdlib.h>

注意

1.转换后的值不可超出long可表示的范围

2.函数会丢弃空白字符,找到第一个非空白字符,从这个字符开始,取一个加号或者减号,取此后的十进制数字,将他们转为long类型作为返回值。

3.若字符串在整数的字符后包含其他字符,则忽略这些字符,将此前的整数部分进行转换。

4.若为空字符串或无效字字符串,则返回0。

atof()函数

函数作用

将字符串内容中的浮点数转换成浮点型。

函数原型

double atof(const char * string);

返回值:转换后的浮点型。

参数:待转换的字符串。

头文件:<stdlib.h>

注意

1.参数字符串可包含正负号、小数点或E(e)来表示指数部分。

2.函数会丢弃空白字符,找到第一个非空白字符,从这个字符开始,取一个加号或者减号,取此后的十进制数字,将他们转为double类型作为返回值。

3.若字符串在浮点数的字符后包含其他字符,则忽略这些字符,将此前的浮点数部分进行转换。

4.若为空字符串或无效字字符串,则返回0。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值