C中常用的字符、字符串处理函数
关于查找:
(1) size_t strspn( char const *str, char const *group); p182
返回str起始部分匹配group中任意字符的字符数(也可理解为str中第一个不在group中出现的字符的索引值)。
如下:int len1 = strspn(“1234567890”, “af123af”); //len1 = 3
(2) size_t strcspn( char const *str, char const *group);
返回str起始部分不匹配group中任意字符的字符数(str中第一个在group中出现的字符的索引值)。
如下: int n = strcspn( “Hello, world”, “Welcome you” ); //n = 1
(注: 若找不到,则返回str的尾部。)
(3) char *strpbrk(char const *str, char const *group);
返回str中第一个与group中任何一个字符相匹配的字符的地址(指针)。
(注:若没找到,返回NULL。)
(注: 它与strcspn的区别是,前者返回指针,后者返回下标值。)
(4) char *strctr( char const *str, int ch);
(5) char *strrchr( char const *str, int ch);前者返回在str中第一次出现的字符ch(int型)的位置,后者返回在str中最后一次出现的ch的位置。
(6) char *strstr ( char const *s1, char const *s2);
在s1中查找整个子字符串s2第一次出现的起始位置。
(注: 若找不到,返回NULL ,若s2是空字符串,返回s1。)
关于长度:
(7) size_t strlen( char const *string );
返回string包含的字符的个数。
(注:不包括\0的长度。写 int a = strlen(“ABC”);或int a = strlen(“ABC\0”);
结果都为3。)
关于复制与连接:
(8) char *strcpy( char *dst, char const *str);
将src字符串复制到dst中(连带NUL字节)。返回指向dst数组的指针。原来dst中的内容被覆盖。
(注: 若src和dst在内存中是重叠的,则结果是未定义的。)
(注: 不要让str的长度大于dst的长度。)
(9) char *strcat ( char *dst, char const *src );
将src添加到dst的末尾,返回指向dst数组的指针。
(注: 若重叠,未定义。)
(注: 要保证dst剩余空间足够。)
关于比较:
(10) int strcmp ( char const *s1, char const *s2 );
字典比较。比较2个字符串中最先不匹配的字符的大小(依据字符集)。
若s1 < s2, 返回小于0的值;若s1 > s2, 返回大于0的值;
若s1 = s2,返回0。
长度受限的字符串函数:
(11) char *strncpy( char *dst, char const *str, size_t len );
(12) char *strncat( char *dst, char const *str, size_t len );
(13) int strncmp( char const *s1, char const *s2, size_t len );
功能类似于前3者,但有一些区别和注意点。