字符串处理函数整理

    本篇文章是综合各大网页有关字符串处理函数的内容,总结而成。

      

1)字符串操作 
strcpy(p, p1) 复制字符串 

将字符串p1中的内容复制到字符串p中,返回值是p。


strncpy(p, p1, n) 复制指定长度字符串

 将字符串p1中的内容复制到字符串p中,返回值是p,空字符后的字符不被复制。如果原字符的字符数少于n,则目标字 符串中就以空字符填充,如果大于或等于n,空字符就不被复制。


strcat(p, p1) 附加字符串 

将字符串p1中的内容复制到字符串p中的结尾,p结尾处的空字符被p1中的第一个字符覆盖,返回p。


strncat(p, p1, n) 附加指定长度字符串 

将字符串p1中的前n个字符的内容复制到字符串p中的结尾,多余的不复制,p结尾处的空字符被p1中的第一个字符覆盖 ,并在p1结尾处新增一个空字符,返回p。 


strlen(p) 取字符串长度 


strcmp(p, p1) 比较字符串 

逐个字符进行比较,若前面的字符的ASCII码大于后面的,返回正数,小于后面的,返回负数,相等,返回0


strncmp(p, p1, n) 比较指定长度字符串 

p和p的逐个字符进行比较,若前面的字符的ASCII码大于后面的,返回正数,小于后面的,返回负数,相等,返回0


strchr(p, c) 在字符串中查找指定字符 

该函数返回一个指向字符串p中存放字符c的第一个位置的指针(空字符也是字符串的一部分,因此也可以搜索到), 如果没有找到该字符,则返回空指针。


strrchr(p, c) 在字符串中反向查找 

该函数返回一个指向字符串p中存放字符c的最后一个位置的指针(空字符也是字符串的一部分,因此也可以搜索到)  如果没有找到该字符,则返回空指针。


strstr(p, p1) 查找字符串 

在p中查找第一次出现和p1相等的字符串的地址,如果没有找到,则返回空指针。


strpbrk(p, p1) 

返回地址,指向字符串p中存放p1字符串中的任何一个字符的地址,从前向后的顺序,先搜索先返回,若没有找到, 则返回空指针。
strspn(p, p1) 

返回字符串中连续不含指定字符串内容的字符数,表头文件#include<string.h>
定义函数
size_t strspn (const char *s,const char * accept);
函数说明
strspn()从参数s 字符串的开头计算连续的字符,而这些字符都完全是accept 所指字符串中的字符。简单的说, 若strspn()返回的数值为n,则代表字符串s 开头连续有n 个字符都是属于字符串accept内的字符。
返回值
返回字符串s开头连续包含字符串accept内的字符数目。


strcspn(p, p1) 

头文件:#inclued<string.h>
定义函数:size_t strcspn(const char *s, const char * reject);
函数说明:strcspn()从参数s 字符串的开头计算连续的字符, 而这些字符都完全不在参数reject 所指的字符串中. 简单 地说, 若strcspn()返回的数值为n, 则代表字符串s 开头连续有n 个字符都不含字符串reject 内的字符.
返回值:返回字符串s 开头连续不含字符串reject 内的字符数目.


2)字符串到数值类型的转换 
strtod(p, ppend) 

从字符串 p 中转换 double 类型数值,并将后续的字符串指针存储到 ppend 指向的 char* 类型存储。 

strtod()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,到出现非数字或字符 串结束时('\0')才结束转换,并将结果返回。若endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr 传回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分。如123.456或123e-2。


strtol(p, ppend, base) 

从字符串 p 中转换 long 类型整型数值,base 显式设置转换的整型进制,设置为 0 以根据特定格式判断所用进制, 0x, 0X 前缀以解释为十六进制格式整型,0 前缀以解释为八进制格式整型 


atoi(p) 字符串转换到 int 整型 


atof(p) 字符串转换到 double 符点数 


atol(p) 字符串转换到 long 整型  



3)文本转换成 long 类型超出表示范围时将设置 C 运行时的 errno 全局变量,errno == ERANGE,使用 strerror(errno) 来取得错误对应的字符串  


4)字符检查 
isalpha() 检查是否为字母字符 
isupper() 检查是否为大写字母字符 
islower() 检查是否为小写字母字符 
isdigit() 检查是否为数字 
isxdigit() 检查是否为十六进制数字表示的有效字符 
isspace() 检查是否为空格类型字符 
iscntrl() 检查是否为控制字符 
ispunct() 检查是否为标点符号 
isalnum() 检查是否为字母和数字 
isprint() 检查是否是可打印字符 
isgraph() 检查是否是图形字符,等效于 isalnum() | ispunct()  

字符检查函数,若符合条件则返回真,不一定是1,若不符合条件,则返回0.


void *memset(void *dest, int c, size_t count);  
将dest前面count个字符置为字符c.  返回dest的值.  


void *memmove(void *dest, const void *src, size_t count);  
从src复制count字节的字符到dest. 如果src和dest出现重叠, 函数会自动处理.  
返回dest的值.  


void *memcpy(void *dest, const void *src, size_t count);  
从src复制count字节的字符到dest. 与memmove功能一样, 只是不能处理src和dest出现重叠.  
返回dest的值.  


void *memchr(const void *buf, int c, size_t count);  
在buf前面count字节中查找首次出现字符c的位置. 找到了字符c或者已经搜寻了count个字节, 查找即停止. 操作成功则返回buf中首次出现c的位置指针, 否则返回NULL.  


void *_memccpy(void *dest, const void *src, int c, size_t count);  
从src复制0个或多个字节的字符到dest. 当字符c被复制或者count个字符被复制时, 复制停止.  
如果字符c被复制, 函数返回这个字符后面紧挨一个字符位置的指针. 否则返回NULL.  


int memcmp(const void *buf1, const void *buf2, size_t count);  
比较buf1和buf2前面count个字节大小.  
返回值< 0, 表示buf1小于buf2;  
返回值为0, 表示buf1等于buf2;  
返回值> 0, 表示buf1大于buf2.  


int memicmp(const void *buf1, const void *buf2, size_t count);  


比较buf1和buf2前面count个字节. 与memcmp不同的是, 它不区分大小写.  


返回值同上.  


size_t strlen(const char *string);  


获取字符串长度, 字符串结束符NULL不计算在内.  


没有返回值指示操作错误.  


char *strrev(char *string);  


将字符串string中的字符顺序颠倒过来. NULL结束符位置不变.  


返回调整后的字符串的指针.  


char *_strupr(char *string);  


将string中所有小写字母替换成相应的大写字母, 其它字符保持不变.  


返回调整后的字符串的指针.  


char *_strlwr(char *string);  


将string中所有大写字母替换成相应的小写字母, 其它字符保持不变.  


返回调整后的字符串的指针.  


char *strchr(const char *string, int c);  


查找字符c在字符串string中首次出现的位置, NULL结束符也包含在查找中.  


返回一个指针, 指向字符c在字符串string中首次出现的位置, 如果没有找到, 则返回NULL.  


char *strrchr(const char *string, int c);  


查找字符c在字符串string中最后一次出现的位置, 也就是对string进行反序搜索, 包含NULL结束符.  
返回一个指针, 指向字符c在字符串string中最后一次出现的位置, 如果没有找到, 则返回NULL.  


char *strstr(const char *string, const char *strSearch);  
在字符串string中查找strSearch子串.  返回子串strSearch在string中首次出现位置的指针. 如果没有找到子串strSearch, 则返回NULL. 如果子串strSearch为空串, 函数返回string值.  


char *strdup(const char *strSource);  
函数运行中会自己调用malloc函数为复制strSource字符串分配存储空间, 然后再将strSource复制到分配到的空间中. 注意要及时释放这个分配的空间.  
返回一个指针, 指向为复制字符串分配的空间; 如果分配空间失败, 则返回NULL值.  


char *strcat(char *strDestination, const char *strSource);  
将源串strSource添加到目标串strDestination后面, 并在得到的新串后面加上NULL结束符. 源串strSource的字符会覆盖目标串strDestination后面的结束符NULL. 在字符串的复制或添加过程中没有溢出检查, 所以要保证目标串空间足够大. 不能处理源串与目标串重叠的情况.  函数返回strDestination值.  


char *strncat(char *strDestination, const char *strSource, size_t count);  
将源串strSource开始的count个字符添加到目标串strDest后. 源串strSource的字符会覆盖目标串strDestination后面的结束符NULL. 如果count大于源串长度, 则会用源串的长度值替换count值. 得到的新串后面会自动加上NULL结束符. 与strcat函数一样, 本函数不能处理源串与目标串重叠的情况. 函数返回strDestination值.  


char *strcpy(char *strDestination, const char *strSource);  
复制源串strSource到目标串strDestination所指定的位置, 包含NULL结束符. 不能处理源串与目标串重叠的情况.函数返回strDestination值.  


char *strncpy(char *strDestination, const char *strSource, size_t count);  
将源串strSource开始的count个字符复制到目标串strDestination所指定的位置. 如果count值小于或等于strSource串的长度, 不会自动添加NULL结束符目标串中, 而count大于strSource串的长度时, 则将strSource用NULL结束符填充补齐count个字符, 复制到目标串中. 不能处理源串与目标串重叠的情况.函数返回strDestination值.  


char *strset(char *string, int c);  
将string串的所有字符设置为字符c, 遇到NULL结束符停止. 函数返回内容调整后的string指针.  


char *strnset(char *string, int c, size_t count);  
将string串开始count个字符设置为字符c, 如果count值大于string串的长度, 将用string的长度替换count值. 函数返回内容调整后的string指针.  


size_t strspn(const char *string, const char *strCharSet);  
查找任何一个不包含在strCharSet串中的字符 (字符串结束符NULL除外) 在string串中首次出现的位置序号.  返回一个整数值, 指定在string中全部由characters中的字符组成的子串的长度. 如果string以一个不包含在strCharSet中的字符开头, 函数将返回0值.  


size_t strcspn(const char *string, const char *strCharSet);  
查找strCharSet串中任何一个字符在string串中首次出现的位置序号, 包含字符串结束符NULL.  
返回一个整数值, 指定在string中全部由非characters中的字符组成的子串的长度. 如果string以一个包含在strCharSet中的字符开头, 函数将返回0值.  


char *strspnp(const char *string, const char *strCharSet);  
查找任何一个不包含在strCharSet串中的字符 (字符串结束符NULL除外) 在string串中首次出现的位置指针. 返回一个指针, 指向非strCharSet中的字符在string中首次出现的位置.  


char *strpbrk(const char *string, const char *strCharSet);  
查找strCharSet串中任何一个字符在string串中首次出现的位置, 不包含字符串结束符NULL.  
返回一个指针, 指向strCharSet中任一字符在string中首次出现的位置. 如果两个字符串参数不含相同字符, 则返回NULL值.  


int strcmp(const char *string1, const char *string2);  
比较字符串string1和string2大小.  
返回值< 0, 表示string1小于string2;  
返回值为0, 表示string1等于string2;  
返回值> 0, 表示string1大于string2.  


int stricmp(const char *string1, const char *string2);  
比较字符串string1和string2大小,和strcmp不同, 比较的是它们的小写字母版本.返回值与strcmp相同.  


int strcmpi(const char *string1, const char *string2);  
等价于stricmp函数, 只是提供一个向后兼容的版本.  


int strncmp(const char *string1, const char *string2, size_t count);  
比较字符串string1和string2大小,只比较前面count个字符. 比较过程中, 任何一个字符串的长度小于count, 则count将被较短的字符串的长度取代. 此时如果两串前面的字符都相等, 则较短的串要小.  
返回值< 0, 表示string1的子串小于string2的子串;  
返回值为0, 表示string1的子串等于string2的子串;  
返回值> 0, 表示string1的子串大于string2的子串.  


int strnicmp(const char *string1, const char *string2, size_t count);  
比较字符串string1和string2大小,只比较前面count个字符. 与strncmp不同的是, 比较的是它们的小写字母版本.  返回值与strncmp相同.  


char *strtok(char *strToken, const char *strDelimit);  
在strToken 串中查找下一个标记, strDelimit字符集则指定了在当前查找调用中可能遇到的分界符. 返回一个指针, 指向在strToken中找到的下一个标记. 如果找不到标记, 就返回NULL值. 每次调用都会修改strToken内容, 用NULL字符替换遇到的每个分界符. 


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值