前言
本文仅是对常见一点的字符串函数进行通俗化解释和相关注意点的提醒,函数的具体使用演示可通过下方链接自行学习: C语言库函数查找
字符串函数的头文件是 <string.h>
strlen函数
strlen函数:计算字符串的长度
size_t strlen( const char* str );
参数:可以直接传一个字符串,可以传字符数组的数组名,还可以传字符指针。
返回类型:size_t,无符号整型,就是返回一个正整数来表示长度,也因如此strlen的返回值相减不会出现负数。
【注】:strlen函数以字符串中的第一个 ‘\0’ 作为结束标志,返回的是在 ‘\0’ 前面出现的字符个数(不包含 ‘\0’ )。
strcpy和strncpy函数
strcpy函数:字符串拷贝函数,将字符串从源空间拷贝到目标空间。
char* strcpy( char* destination, const char* source );
参数:第一个参数传目标空间变量,第二个参数传源空间变量。传的变量可以是字符数组数组名或字符指针。
返回值:返回目标空间的首地址。
【注】:strcpy函数以源字符串的 ‘\0’ 为结束标志,会连带着将 ‘\0’ 也拷贝到目标空间,所以要保证目标空间足够大。
strncpy函数:从源空间拷贝指定个数的字符到目标空间
char* strncpy( char* destination, const char* source, size_t num );
参数:前面两个参数的意义与strcpy函数相同,第三个参数传一个数字,表示要拷贝的字符数量。
返回值:返回目标空间的首地址。
【注】:num 是几就拷贝几个字符,不会自动添 ‘\0’ ;若 num 大于源字符的长度,剩余的部分就全部用 ‘\0’ 补上。
strcat和strncat函数
strcat函数:字符串追加函数,将源字符串追加到目标字符串后,就是将第二个参数的字符串追到第一个参数的字符串后面。
char* strcat( char* destination, const char* source );
参数:第一个参数传目标空间变量,第二个参数传源空间变量。传的变量可以是字符数组数组名或字符指针。
返回值:返回目标空间的首地址。
【注】:源字符串必须要有 ‘\0’ ,目标空间必须足够大,目标字符串的 ‘\0’ 被覆盖。
strncat函数:追加指定个数个字符到目标字符串后面。
char* strncat( char* destination, const char* source, size_t num );
参数:前面两个参数的意义与strcat函数相同,第三个参数传一个数字,表示要追加的字符数量。
返回值:返回目标空间的首地址。
【注】:若追加的最后一个字符不是 ‘\0’,则追加完 num 个字符后会额外补一个 ‘\0’ 在最后面,追加的内容会覆盖目标字符串的 ‘\0’。
strcmp和strncmp函数
strcmp函数:字符串比较函数,从前往后依次比较字符串对应位置上字符的ASCII码值,比较的是内容而不是长度。
int strcmp( const char* str1, const char* str2 );
参数:传递两个字符串、两个字符数组数组名或两个字符指针均可。
返回值:
若 str1 > str2,返回 大于0 的整数
若 str1 = str2,返回 0
若 str1 < str2,返回 小于0 的整数
strncmp函数:从前往后依次比较两个字符串指定个数个字符。
int strncmp( const char* str1, const char* str2, size_t num );
参数:前面两个参数的意义与strcmp函数相同,第三个参数传一个数字,表示要比较的字符数量。
返回值:与strcmp相同。
strstr和strtok函数
strstr函数:从第一个字符串中查找第二个字符串。
char* strstr( const char* str1, const char* str2);
参数:传递两个字符串、两个字符数组数组名或两个字符指针均可。
返回值:若找到了返回第一个字符串中第二个字符串出现的首地址,若没找到返回NULL。
strtok函数:将一个字符串按特定的分隔符切分开。
char* strtok( char* str, const char* sep );
参数:第一个参数同一个字符串第一次传字符串或其对应的数组或指针,之后传NULL;第二个参数传自定义的分隔符(自己传哪个字符,哪个字符就是分隔符)。
返回值:对于同一个字符串,第一次调用返回分割后的第一块字符串的首地址,第二次调用返回分割后的第二块字符串的首地址,以此类推。
strerror函数
strerror函数:翻译出错误码代表的信息。
char* strerror( int errnum );
参数:传错误码或储存错误码的变量。
返回值:错误码信息字符串的首地址。
常与系统库里自带的变量 errno 搭配使用,errno 储存最近一处错误的错误码,使用 errno 要引用头文件 <errno.h>。要打印出错误码还要用printf函数。
【补】:perror函数 可直接打印出错误信息,一个参数,传一个字符串就可在打印错误信息前先打印出这个自己传的字符串。
字符操作
字符分类函数:
函数 | 功能 |
---|---|
iscntrl | 判断是否为任何控制字符 |
isspace | 判断是否为空白字符:空格‘ ’,换页‘\f’,换行’\n’,回车‘\r’,制表符’\t’或者垂直制表符’\v’ |
isdigit | 判断是否为十进制数字 0~9 |
isxdigit | 判断是否为十六进制数字,包括所有十进制数字,小写字母a ~ f, 大写字母A ~ F |
islower | 判断是否为小写字母a ~ z |
isupper | 判断是否为大写字母A ~ Z |
isalpha | 判断是否为字母a ~ z或A ~ Z |
isalnum | 判断是否为字母或者数字,a ~ z,A ~ Z,0 ~ 9 |
ispunct | 判断是否为标点符号,任何不属于数字或者字母的图形字符(可打印) |
isgraph | 判断是否为任何图形字符 |
isprint | 判断是否为任何可打印字符,包括图形字符和空白字符 |
这些函数都是判断为真时返回非零数字,判断为假时返回0。
字符转换函数:
字母转小写函数:int tolower ( int c );
字母转大写函数:int toupper ( int c );