Linux 字符串处理函数
1 strchr
函数原型:extern char *strchr(char *str,char character)
参数说明:str为一个字符串的指针,character为一个待查找字符。
所在库名:#include <string.h>
函数功能:从字符串str中寻找字符character第一次出现的位置。
返回说明:返回指向第一次出现字符character位置的指针,如果没找到则返回NULL。
2 strstr函数
函数功能:在一个字符串中查找一个字串
函数原型:char *strstr(char const *s1,char const *s2);
函数说明:strstr实现在s1中查找整个s2第一次出现的位置,不包括str2的串结束符, 并返回一个指向该位置的指针。如果s2并没有完整的出现在s1的任何地方,函数返回一个NULL指针。如果第二个字符串是一个空字符串,函数返回s1。
两个函数的区别是,strchr是在字符串中查找单个字符,可以是'\n'换行符(验证过),strstr是在s1中查找出现s2的位置,在字符串中查找另外一个字符串出现的位置。
3 strcat函数
原型: char *strcat(char *dest,char *src)
参数说明:dest为一个目的字符串的指针,即被连接的字符串(在前),src为一个源字符串的指针(在后)。
所在库名:#include <string.h>
函数功能:把src所指字符串添加到dest结尾处实现字符串的连接,连接过程覆盖dest结尾处的'/0'。
返回说明:src和dest所指内存区域不可以重叠,并且dest必须有足够的空间来容纳src的字符串返回指向dest的指针
4 strncat 函数
函数原型:extern char *strncat(char *dest,char *src,int n)
参数说明:src为源字符串,dest为目的字符串,n为指定的src中的前n个字符。
所在库名:#include <string.h>
函数功能:把src所指字符串的前n个字符添加到dest结尾处,覆盖dest结尾处的'/0',实现字符串连接。
返回说明:返回指针,连接后的字符串。
5 strlen函数
函数:size_t strlen(const char *s);
功能:strlen()用来计算指定的字符串s的长度,不包括结束字符"\0"。
头文件:#include <string.h>
返回值:返回字符串s的字符数。
6 strcmp函数
函数:int strcmp(const char *s1, const char *s2);
功能:strcmp()用来比较参数s1和s2字符串。字符串大小的比较是以ASCII 码表上的顺序来决定,此顺序亦为字符的值。strcmp()首先将s1第一个字符值减去s2第一个字符值,若差值为0则再继续比较下个字符,若差值不为0则将差值返回。例如字符串"Ac"和"ba"比较则会返回字符"A"(65)和'b'(98)的差值(-33)。
头文件:#include <string.h>
返回值:若参数s1和s2字符串相同则返回0。s1若大于s2则返回大于0的值。s1若小于s2则返回小于0 的值。
7 strcpy函数
函数:char *strcpy(char *dest, const char *src);
功能:strcpy()会将参数src字符串拷贝至参数dest所指的地址。
头文件:#include <string.h>
返回值:返回参数dest的字符串起始地址。如果参数dest所指的内存空间不够大,可能会造成缓冲溢出(buffer Overflow)的错误情况,在编写程序时请特别留意,或者用 strncpy() 来取代。
8 strncpy函数
函数: char * strncpy(char *dest, const char *src, size_t n);
功能:复制字符串src中的内容(字符,数字、汉字....)到字符串dest中,复制多少由n的值决定。如果src的前n个字符不含NULL字符,则结果不会以NULL字符结束。如果n<src的长度,只是将src的前n个字符复制到dest的前n个字符,不自动添加'\0',也就是结果dest不包括'\0',需要再手动添加一个'\0'。如果src的长度小于n个字节,则以NULL填充dest直到复制完n个字节。src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符长度+'\0'
头文件:#include <string.h>
【参数说明】dest 为目标字符串指针,src 为源字符串指针。strncpy()会将字符串src前n个字符拷贝到字符串dest。src 和 dest 所指的内存区域不能重叠,且 dest 必须有足够的空间放置n个字符。
不像strcpy(),strncpy()不会向dest追加结束标记'\0',所以在strncpy()后使用strcat()因找不到‘\0’会有问题;
若想strncpy()在结尾添加"\0"则需n大于src字符串长度
9 strpbrk函数
函数:char *strpbrk(const char *str, const char *group);
功能:依次检验字符串str中的字符,当被检验字符在字符串group中也包含时,则停止检验,并返回该字 符位置,空字符NULL不包括在内。
头文件:#include <string.h>
返回值:返回str中第一个满足条件的字符的指针,如果没有匹配字符则返回空指针NULL
10 strtok函数
函数:char *strtok(char *s, const char *delim);
功能:分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串, strtok()用来将字符串分割成一个个片段。参数s指向欲分割的字符串,参数delim则为分割字符串,当strtok()在参数s的字符串中发现到参数delim的分割字符时则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s字符串,往后的调用则将参数s设置成NULL。每次调用成功则返回被分割出片段的指针。
头文件:#include <string.h>
返回值 : 从s开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。所有delim中包含的字符都会被滤掉,并将被滤掉的地方设为一处分割的节点
举例:
使用第二个参数ct中的分隔符字符串,分割第一个参数s,ct参数的分隔符可以是任意字符,可以是单个字符的分隔符,也可以是字符串形式的分隔符如:"!,;'/"等,都可以作为分隔符。例如:
s="abc,def,123;456!/aaa"
ct=",;!/"
s将被分割为为:abc def 123 456 aaa
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char s[] = "abc,def,123;456!/aaa"; char delim[] = " ,;!/"; char *p = NULL; for(p = strtok(s, delim); p != NULL; p = strtok(NULL, delim)) { printf("%s ", p); } printf("\n"); return 0; }
gcc strtok.c -o strtok
$ ./strtok
abc def 123 456 aaa
---------------------
作者:xiaoyao1004
来源:CSDN
原文:https://blog.csdn.net/xiaoyao1004/article/details/83863344
版权声明:本文为博主原创文章,转载请附上博文链接!
posted on 2019-07-26 09:40 liujx2019 阅读(2135) 评论(0) 编辑 收藏 举报