字符串处理函数整理

2024-08-25 08:58

本文主要是介绍字符串处理函数整理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

      

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字符替换遇到的每个分界符. 


这篇关于字符串处理函数整理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1105109

相关文章

C#从XmlDocument提取完整字符串的方法

《C#从XmlDocument提取完整字符串的方法》文章介绍了两种生成格式化XML字符串的方法,方法一使用`XmlDocument`的`OuterXml`属性,但输出的XML字符串不带格式,可读性差,... 方法1:通过XMLDocument的OuterXml属性,见XmlDocument类该方法获得的xm

JSON字符串转成java的Map对象详细步骤

《JSON字符串转成java的Map对象详细步骤》:本文主要介绍如何将JSON字符串转换为Java对象的步骤,包括定义Element类、使用Jackson库解析JSON和添加依赖,文中通过代码介绍... 目录步骤 1: 定义 Element 类步骤 2: 使用 Jackson 库解析 jsON步骤 3: 添

Java 字符数组转字符串的常用方法

《Java字符数组转字符串的常用方法》文章总结了在Java中将字符数组转换为字符串的几种常用方法,包括使用String构造函数、String.valueOf()方法、StringBuilder以及A... 目录1. 使用String构造函数1.1 基本转换方法1.2 注意事项2. 使用String.valu

python修改字符串值的三种方法

《python修改字符串值的三种方法》本文主要介绍了python修改字符串值的三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录第一种方法:第二种方法:第三种方法:在python中,字符串对象是不可变类型,所以我们没办法直接

JAVA中整型数组、字符串数组、整型数和字符串 的创建与转换的方法

《JAVA中整型数组、字符串数组、整型数和字符串的创建与转换的方法》本文介绍了Java中字符串、字符数组和整型数组的创建方法,以及它们之间的转换方法,还详细讲解了字符串中的一些常用方法,如index... 目录一、字符串、字符数组和整型数组的创建1、字符串的创建方法1.1 通过引用字符数组来创建字符串1.2

C#中字符串分割的多种方式

《C#中字符串分割的多种方式》在C#编程语言中,字符串处理是日常开发中不可或缺的一部分,字符串分割是处理文本数据时常用的操作,它允许我们将一个长字符串分解成多个子字符串,本文给大家介绍了C#中字符串分... 目录1. 使用 string.Split2. 使用正则表达式 (Regex.Split)3. 使用

Java中JSON字符串反序列化(动态泛型)

《Java中JSON字符串反序列化(动态泛型)》文章讨论了在定时任务中使用反射调用目标对象时处理动态参数的问题,通过将方法参数存储为JSON字符串并进行反序列化,可以实现动态调用,然而,这种方式容易导... 需求:定时任务扫描,反射调用目标对象,但是,方法的传参不是固定的。方案一:将方法参数存成jsON字

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

每日一题|牛客竞赛|四舍五入|字符串+贪心+模拟

每日一题|四舍五入 四舍五入 心有猛虎,细嗅蔷薇。你好朋友,这里是锅巴的C\C++学习笔记,常言道,不积跬步无以至千里,希望有朝一日我们积累的滴水可以击穿顽石。 四舍五入 题目: 牛牛发明了一种新的四舍五入应用于整数,对个位四舍五入,规则如下 12345->12350 12399->12400 输入描述: 输入一个整数n(0<=n<=109 ) 输出描述: 输出一个整数

rtmp流媒体编程相关整理2013(crtmpserver,rtmpdump,x264,faac)

转自:http://blog.163.com/zhujiatc@126/blog/static/1834638201392335213119/ 相关资料在线版(不定时更新,其实也不会很多,也许一两个月也不会改) http://www.zhujiatc.esy.es/crtmpserver/index.htm 去年在这进行rtmp相关整理,其实内容早有了,只是整理一下看着方