C语言ctype.h头文件字符测试函数

C/C++语言ctype.h头文件字符测试函数

C有一系列专门处理字符的函数,在ctype.h中包含了这些函数的原型,当然在C++中,这些函数被放在了cctype中。

作用

这些函数接收一个字符作为参数,如果该字符属于某个特殊的类别,就返回一个真值(非零值),否则,返回假值。

要注意的是,被传进的参数应该为整数类型(ASCLL码形式),如果你传递进去了一个浮点数,那么它将会被转换为整数。

字符类型

可以传入的字符包括两种类型:

  • 可打印字符(Printable Characters):这类字符能够显示在终端上。
  • 控制字符(Control Characters):这类字符通常是为了执行特定的操作而存在的

库函数

Chinese:

序号 函数 描述 返回值
1. isalnum() 这个函数用来判断字符是否是字母或数字 如果传入的参数不是字母或数字,返回0。如果传入的参数是字母或数字,返回非零值。
2. isalpha() 这个函数用来判断字符是否是字母 如果传入的参数不是字母,返回0。如果传入的参数是字母,返回非零值。
3. isblank() 这个函数用来判断字符是否是空格 如果传入的参数不是空格,返回0。如果传入的参数是空格,返回非零值。
4. iscntrl() 这个函数用来判断字符是否是控制字符(\n, \b, \t, \r)。 如果传入的参数不是控制字符,返回0。如果传入的参数是控制字符,返回非零值。
5. isdigit() 这个函数用来判断字符是否是数字。 如果传入的参数不是数字,返回0。如果传入的参数是数字,返回非零值。
6. islower() 这个函数用来判断字符是否是小写字母。 如果传入的参数不是小写字母,返回0。如果传入的参数是小写字母,返回非零值。
7. isprint() 这个函数用来判断字符是否是可打印字符。 如果传入的参数不是可打印字符,返回0。如果传入的参数是可打印字符,返回非零值。
8. ispunct() 这个函数用来判断字符是否是标点符号(既不是字母或数字也不是空格的字符)。 如果传入的参数不是标点符号,返回0。如果传入的参数是标点符号,返回非零值。
9. isspace() 这个函数用来判断字符是否是空白字符。 如果传入的参数是空白字符,返回非零值。如果传入的参数不是空白字符,返回0。
10. isupper() 这个函数用来判断字符是否是大写字母。 如果传入的参数是大写字母,返回非零值。如果传入的参数不是大写字母,返回0。
11. isxdigit() 这个函数用来判断字符是否是十六进制数字。 如果传入的参数是十六进制数字,返回非零值。如果传入的参数不是十六进制数字,返回0。
12. tolower() 这个函数用来把大写字母转换成小写字母。 返回对应的小写字母。
13. toupper() 这个函数用来把小写字母转换成大写字母。 返回对应的大写字母。

English:

S.No Function Description Return Values
1. isalnum() This function identifies the alphanumeric characters Returns 0 if the passed argument is non – alphanumeric character. Returns non zero value if the passed argument is alphanumeric character.
2. isalpha() This function identifies the alphabets from other characters Returns 0 if the passed argument is not an alphabet. Returns non zero value if the passed argument is an alphabet.
3. isblank() This function identifies the blank spaces from other characters Returns 0 if the passed argument is not a blank space. Returns nonzero value if the passed argument is a blank space.
4. iscntrl() This function identifies the control characters(\n, \b, \t, \r). Returns 0 if the passed argument is not a control character. Returns nonzero value if the passed argument is a control character.
5. isdigit() This function identifies numbers in character. Returns 0 if the passed argument is not a number. Returns nonzero value if the passed argument is a number.
6. islower() This function identifies the lowercase alphabets. Returns 0 if the passed argument is not a lowercase alphabet. Returns nonzero value if the passed argument is a lowercase alphabet.
7. isprint() This function identifies the printable characters. Returns 0 if the passed argument is a non printable character. Returns nonzero value if the passed argument is a printable character.
8. ispunct() This function identifies punctuation characters (characters that are neither alphanumeric nor space). Returns 0 if the passed argument is not a punctuation character. Returns nonzero value if the passed argument is a punctuation character.
9. isspace() This function identifies white-space characters. Returns 0 if the passed argument is not a white-space character. Returns nonzero value if the passed argument is a white-space character.
10. isupper() This function identifies the uppercase alphabets. Returns 0 if the passed argument is not an uppercase alphabet.Returns nonzero value if the passed argument is an uppercase alphabet.
11. isxdigit() This function checks whether the argument is a hexadecimal digit. Returns 0 if the argument is not a hexadecimal digit, returns a nonzero value if it is.
12. tolower() This function converts an uppercase letter to a lowercase letter. Returns the lowercase letter corresponding to the uppercase letter.
13. toupper() This function converts a lowercase letter to an uppercase letter. Returns the uppercase letter corresponding to the lowercase letter.

下面的内容是一些例子:

示例1、以下程序识别字母、数字的数量

#include  
//头文件
#include  

void identify_alpha_numeric(char a[]) 
{ 
	int count_alpha = 0, count_digit = 0; 
	for (int i = 0; a[i] != '\0'; i++) { 
		// 检查这个字符是不是字母
		if (isalpha(a[i])) 
			count_alpha++; 

		// 检查这个字符是不是数字 
		if (isdigit(a[i])) 
			count_digit++; 
	} 
	printf("The number of alphabets are %d\n", 
		count_alpha); 
	printf("The number of digits are %d", 
		count_digit); 
} 

int main() 
{ 
	// 字符串初始化
	char a[] 
		= "Hi 1234, "
		" Welcome to GeeksForGeeks"; 
	identify_alpha_numeric(a); 
} 

OUTPUT:

The number of alphabets are 24
The number of digits are 4

示例2、以下程序识别大写和小写字母的数量并将大写字母转换为小写字母:

#include  

// 头文件
#include  

char* identify_convert_ul(char a[]) 
{ 
	int count_upper = 0, count_lower = 0; 
	for (int i = 0; a[i] != '\0'; i++) { 

		// 检查大写字母 
		if (isupper(a[i])) { 
			count_upper++; 
			a[i] = tolower(a[i]); 
		} 

		//  检查小写字母
		else if (islower(a[i])) { 
			count_lower++; 
			a[i] = toupper(a[i]); 
		} 
	} 
	printf("No. of uppercase characters are %d\n", 
		count_upper); 
	printf("No. of lowercase characters are %d", 
		count_lower); 
	return a; 
} 

int main() 
{ 
	// 字符串初始化 
	char a[] = "Hi, Welcome to GeeksForGeeks"; 
	char* p; 
	p = identify_convert_ul(a); 
	printf("%s", p); 
} 

OUTPUT:

No. of uppercase alphabets are 5
No. of lowercase alphabets are 19
hI, wELCOME TO gEEKSfORgEEKS

示例 3:以下程序在新行中打印每个单词:

#include  

// 头文件
#include  

char* print_word(char a[]) 
{ 
	for (int i = 0; a[i] != '\0'; i++) { 

		// 替换空格为换行符'\n'
		if (isblank(a[i])) 
			a[i] = '\n'; 
	} 
	return a; 
} 
int main() 
{ 
	// 字符串初始化
	char a[] = "Hello Everyone."
			" Welcome to GeeksForGeeks portal. "; 
	char* p; 
	p = print_word(a); 
	printf("%s", p); 
} 

OUTPUT:

Hello
Everyone.
Welcome
to
GeeksForGeeks
portal.

参考文献:
https://www.geeksforgeeks.org/ctype-hcctype-library-in-c-c-with-examples/

你可能感兴趣的:(C语言进阶,c语言,c++)