字符串处理函数整理

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

相关文章

数论入门整理(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相关整理,其实内容早有了,只是整理一下看着方

笔记整理—内核!启动!—kernel部分(2)从汇编阶段到start_kernel

kernel起始与ENTRY(stext),和uboot一样,都是从汇编阶段开始的,因为对于kernel而言,还没进行栈的维护,所以无法使用c语言。_HEAD定义了后面代码属于段名为.head .text的段。         内核起始部分代码被解压代码调用,前面关于uboot的文章中有提到过(eg:zImage)。uboot启动是无条件的,只要代码的位置对,上电就工作,kern

JavaScript整理笔记

JavaScript笔记 JavaScriptJavaScript简介快速入门JavaScript用法基础语法注释关键字显示数据输出innerHTML innerText属性返回值的区别调试 数据类型和变量数据类型数字(Number)字符串(String)布尔值(Boolean)null(空值)和undefined(未定义)数组(Array)对象(Object)函数(Function) 变量

C和指针:字符串

字符串、字符和字节 字符串基础 字符串就是一串零个或多个字符,并且以一个位模式为全0的NUL字节结尾。 字符串长度就是字符串中字符数。 size_t strlen( char const *string ); string为指针常量(const修饰string),指向的string是常量不能修改。size_t是无符号数,定义在stddef.h。 #include <stddef.h>

PHP字符串全排列

方法一: $str = 'abc';$a =str_split($str);perm($a, 0, count($a)-1);function perm(&$ar, $k, $m) {if($k == $m){ echo join('',$ar), PHP_EOL;}else {for($i=$k; $i<=$m; $i++) {swap($ar[$k], $ar[$i]);perm($ar

PHP7扩展开发之字符串处理

前言 这次,我们来看看字符串在PHP扩展里面如何处理。 示例代码如下: <?phpfunction str_concat($prefix, $string) {$len = strlen($prefix);$substr = substr($string, 0, $len);if ($substr != $prefix) {return $prefix." ".$string;} else

十一、C语言:字符串函数

目录 一、strlen 二、strcpy 三、strcat  四、strcmp 五、strstr 六、strtok 七、strerror 一、strlen 注意:strlen()函数的返回值是size_t,两个size_t相减仍为无符号数 int main(){char arr[10] = "abc";char brr[10] = "abc123";if (strl

关于回调函数和钩子函数基础知识的整理

回调函数:Callback Function 什么是回调函数? 首先做一个形象的比喻:   你有一个任务,但是有一部分你不会做,或者说不愿做,所以我来帮你做这部分,你做你其它的任务工作或者等着我的消息,但是当我完成的时候我要通知你我做好了,你可以用了,我怎么通知你呢?你给我一部手机,让我做完后给你打电话,我就打给你了,你拿到我的成果加到你的工作中,继续完成其它的工作.这就叫回叫,手机