C语言标准库函数学习字符处理
字符处理
字符分类函数
Ps:返回值int非零数为真。
#include<ctype.h>
函数声明 |
解释 |
Int isalnum(int c); |
是否为数字或字母【1..a..A..】 |
Int isalpha(int c); |
是否为字母【a..A..】 |
Int iscntrl(int c); |
是否为控制字符【ASCII 0-31】 |
|
|
Int islower(int c); |
是否为小写字母【你懂得】 |
Int issupper(int c); |
是否为大写字母【你也懂得】 |
|
|
Int isdigit(int c); |
是否为10个十进制数字之一【1..】 |
Int isxdigit(int c); |
是否为16个十六进制数字之一【1--f】 |
|
|
Int isprint(int c); |
是否为打印字符【除控制字符】 |
Int isgraph(int c); |
是否为图形字符【除控制字符&空格】 |
Int ispunct(int c); |
是否为标点字符【除控制字符&空格&数字&字母】 |
|
|
Int isspace(int c); |
是否为单词分隔符={’ ’ , ’\t’} |
Int isblank(int c); |
是否为空白字符={制表‘\t’,回车’\r’,换行’\n’,垂直制表’\v’,换页’\f’,空格’ ’} |
转换函数
#include<ctype.h>
函数声明 |
返回值 |
解释 |
Int tolower(int c); |
小写字母 |
转换成小写,非字母返回原值 |
Int toupper(int c); |
大写字母 |
转换成大写,非字母返回原值 |
字符串处理
字符串追加
#include<string.h>
Char* strcat(char* dest, const char* src); |
将src追加在dest后 |
Char* strncat(char* dest, conse char* src, size_t n); |
将指定的src中n个字符追加到dest后,若n>strlen(src),则复制到null为止。若追加字符不含null,则在最后追加一个。 |
Ps:确保dest中有足够的空间来放置追加字符,包括null也要占用一个字节。(’\0’)
Ps2:介绍最后有这么一句:如果两个参数字符串在内存中重叠,这些函数的行为是未定义的。
字符串比较函数
#include<string.h>
Int strcmp(const char* s1,conse char* s2); |
按照字典顺序比较两组字符 |
Int strncmp(const char* s1,conse char* s2,size_t n); |
同上,指定长度 |
Ps:返回值为0说明两字符串相同,正负也代表不同含义。
Ps2:关于字符串不等的情况,举个栗子:
1)str1=”abc”, str2=”abd”; 比较结果是str1 < str2,返回一个小于0的数。
2)str1=”abc”, str2=”abcd”; 比较结果是str1 < str2,返回一个小于0的数。
3)请结合字典和以上两个栗子理解“按字典顺序比较”。
字符串复制函数
#include<string.h>
Char* strcpy(char* dest, const char* src); |
复制src的完整内容到dest,即使空间不足。 |
Char* strncpy(char* dest, conse char* src, size_t n); |
将指定的src中n个字符复制到dest后,若n>strlen(src),则复制到null为止,并用null将数量补全到n。即使复制字符不含null,也不会追加。 |
Ps:确保dest中有足够的空间来放置追加字符,包括null也要占用一个字节。(’\0’)
字符串长度统计函数
#include<string.h>
Size_t strlen(const char* s); |
返回字符串长度,以到null为准 |
字符串搜索函数
#include<string.h>
Char* strchr(const char* s, int c); |
返回第一个出现该字符处的指针 |
Char* strrchr(const char*s, int c); |
返回最后一个出现该字符处的指针 |
Ps:理论上返回一个非const的指针,但实际是和传入的参数相同的。
#include<string.h>
Size_t strspn(const char* s, const char* set); |
|
Size_t strcspn(const char* s, const char* set); |
返回set中所含字符的第一次出现的位置。 |
Char* strpbrk(const char* s, const char* set): |
和strcspn相似,但返回的是该处开始的字符串指针 |
#inlcude<string.h>
Char* strstr(const char* src, const char* sub); |
搜索子串sub在src中的第一次出现,并返回串指针 |
#include<string.h>
Char *strtok(char* str, const char* set); |
非常特别的一个函数,下面会用一个例子来解释用途。请自己体会。 |