C语言的字符处理函数库

时间:2021-02-28 00:48:29

C语言的字符处理函数库提供了两类函数,一类是字符测试函数,一类是字符大小写转换函数。尽管可以使用其他方式来实现这些功能,但建议使用这些库函数,因为这些函数有以下优点:

  • 大多数由宏实现,在运行速度上进行了优化
  • 支持任何字符集,可移植性好
  • 支持程序国际化

字符测试函数

字符测试函数包括以下几个,每个测试函数都返回0或1,1表示测试成功,0表示测试失败。

函数原型 函数意义
int isalnum(int c) c是否是字母或数字
int isalpha(int c) c是否是字母
int iscntrl(int c) c是否是控制字符
int isdigit(int c) c是否是十进制数字
int isgraph(int c) c是否是可显示字符(除去空格)
int islower(int c) c是否是小写字母
int isprint(int c) c是否是可显示字符(包括空格)
int ispunct(int c) c是否是标点符号
int isspace(int c) c是否是空格(包括换页符、换行符、回车符、横向制表符和纵向制表符
int isupper(int c) c是否是大写字母
int isxdigit(int c) c是否是16进制数
/*************************************
* using_test_function.c *
* *
* 测试字符串测试函数,引自C语言程序 *
* 设计-一种现代方法一书 *
*************************************/


#include <stdio.h>
#include <ctype.h>

#define TEST(f) printf(" %c ", f(*p) ? 'x' : ' ');

int main()
{
char *p;
printf(" alnum alpha cntrl graph print space xdigit digit lower punct upper\n");

for(p = "azAZ0 !\t"; *p != '\0'; p++)
{
if (iscntrl(*p))
printf("\\x%02x:", *p);
else
printf(" %c ", *p);

TEST(isalnum);
TEST(isalpha);
TEST(iscntrl);
TEST(isgraph);
TEST(isprint);
TEST(isspace);
TEST(isxdigit);
TEST(isdigit);
TEST(islower);
TEST(ispunct);
TEST(isupper);

printf("\n");
}

return 0;
}

C语言的字符处理函数库

字符大小写转换函数

int tolower(int c);
int toupper(int c);

tolower函数返回字母c对应的小写字母,toupper函数返回字母c对应的大写字母。

/******************************************
* using_lower_upper_transfer.c *
* *
* C语言中大小写转换函数测试,摘自C语言程 *
* 序设计-一种现代方法一书 *
******************************************/


#include <stdio.h>
#include <ctype.h>

int main()
{
char *p;

for (p = "aA0!"; *p != '\0'; p++)
{
printf("tolower('%c') is '%c'", *p, tolower(*p));
printf("toupper('%c'') is '%c'\n", *p, toupper(*p));
}

return 0;
}

C语言的字符处理函数库

参考文献

  1. K.N. King 著,吕秀峰 译. C语言程序设计-现代方法. 人民邮电出版社