C有一系列专门处理字符的函数,在ctype.h中包含了这些函数的原型,当然在C++中,这些函数被放在了cctype中。
这些函数接收一个字符作为参数,如果该字符属于某个特殊的类别,就返回一个真值(非零值),否则,返回假值。
要注意的是,被传进的参数应该为整数类型(ASCLL码形式),如果你传递进去了一个浮点数,那么它将会被转换为整数。
可以传入的字符包括两种类型:
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 <stdio.h>
//头文件
#include <ctype.h>
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 <stdio.h>
// 头文件
#include <ctype.h>
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 <stdio.h>
// 头文件
#include <ctype.h>
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/