作者:于华521_811 | 来源:互联网 | 2024-11-09 14:07
在C语言中,常用的字符和字符串处理函数对于程序开发至关重要。这些函数定义在标准库中,如`stddef.h`中的`size_t`表示无符号整数。本文详细解析了字符和字符串处理函数的应用,特别是查找功能的相关实现。通过具体示例,展示了如何高效地使用这些函数进行字符串操作和字符处理,为开发者提供了实用的参考。
C中常用的字符、字符串处理函数
(注:size_t定义在stddef.h中,代表无符号整数。)
关于查找:
(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。
长度受限的字符串函数:
(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者,但有一些区别和注意点。