C 语言——字符函数和字符串函数
文章目录
一、字符函数
1.1 字符分类函数
C 语言有一系列函数是专门做字符分类的,也就是一个字符是属于什么类型的字符的。这些函数的使用都需要包含一个头文件 ctype.h。
| 函数 | 参数条件 |
|---|---|
| iscntrl | 任何控制字符 |
| isspace | 空白字符 |
| isdigit | 十进制数字 |
| isxdigit | 十六进制数字 |
| islower | 小写字母 |
| isupper | 大写字母 |
| isalpha | 字母 |
| isalnum | 字母或者数字 |
| ispunct | 标点符号 |
| isgraph | 任何图形字符 |
| isprint | 任何可打印字符 |
上面函数的用法基本一致,这里仅举一个例子。
int islower(int c)
islower 可以判断 c 是否是小写字母并通过返回值来说明是否是小写字母,如果是小写字母就返回非 0 的整数,如果不是小写字母,则返回 0。
1.2 字符转换函数
C 语言中还提供了 2 个字符转换函数:
int tolower(int c); // 将参数穿进去的大写字母转小写
int toupper(int c); // 将参数传进去的小写字母转大写
二、字符串函数
2.1 strlen 函数
size_t strlen(const char *str);
字符串以 \0 作为结束标志,strlen 能够返回字符串中 \0 前面出现的字符个数(不包括 \0),故参数指向的字符串必须要以 \0 结束。需要注意的是,函数的返回值类型为 size_t,是无符号的。
2.2 strcpy 函数
strcpy 函数:
char *strcpy(char *destination, const char *source);
strcpy 函数能将源字符串(source) 拷贝到目标空间(destination)中。其源字符串
必须以\0 结束,因为 strcpy 会将源字符串中的 \0 拷贝到目标空间。同时需要注意的是目标空间必须足够大且能可修改,以确保能存放源字符串。
strncpy 函数:
char *strncpy(char *destination, const char *source, size_t num);
strcpy 函数不会检查缓冲区的大小,如果目标空间的大小不够会发生缓存区溢出的情况,因此在实际应用中,更多还是使用 strncpy 函数来规避这个安全隐患。strncpy 函数增加了一个参数 num,表示从源字符串拷贝 num 个字符到目标空间中,如果源字符串的长度小于 num,则在目标后面追加 0,直到 num 个。
2.3 strcat 函数
strcat 函数:
char *strcat(char *destination, const char *source);
strcat 函数能够将源字符串(source)追加到目标字符串(destination)的末尾同时覆盖掉目标字符串末尾的结束标志 \0 并将源字符串的 \0追加到新字符串的末尾。需要注意的是目标空间必须足够大且可修改,以保证能够容纳下字符串的内容。
strncat 函数:
char *strncat(char *destination, const char *source, size_t num);
strcat 函数与 strncpy 函数一样,存在目标空间溢出的风险,因此实际中常使用 strncat 函数规避这个问题。strncat 函数会将源字符串的前 num 个字符追加到目标字符串的末尾,再追加一个 \0 字符,如果源字符串的字符串长度小于 num 的时候,只会将到 \0 的内容追加到目标字符串的末尾。
2.4 strcmp 函数
int strcmp(const char *s1, const char *s2);
strcmp 函数能够将两个字符串(s1 和 s2)进行比较,并返回一个数字以判断两个字符串的大小关系。若 s1 大于 s2,则返回大于 0 的数字;若 s1 等于 s2,则返回 0;若 s1 小于 s2,则返回小于 0 的数字。
strncmp 函数:
int strncmp(const char *str1, const char *str2, size_t num);
同样为了规避空间溢出的风险,使用 strncmp 函数。str1 函数比较 str1 和 str2 的前 num 个字符,如果相等就继续比较,最多比较 num 个字母,如果提前发现不一样就结束。
总结
本文主要介绍了字符函数和字符串函数,其中字符函数定义在头文件 ctype.h 中,包括字符判断函数和字符转换函数;字符串函数定义在头文件 string.h 中,主要包含字符串长度计算,字符串拷贝,字符串追加和字符串比较函数。
更多推荐



所有评论(0)