字符分类函数
iscntrl
判断对应的ASCII值所对应的字符是否为控制字符
在ASCII码中,第0~31号及第127号(共33个)是控制字符或通讯专用字符,
如果 c 确实是控制字符,则与零(即 true)不同的值。否则为零(即假)。(是控制字符返回非0,不是就返回0)
#include<stdio.h> #include<string.h> #include<ctype.h> int main() { int i = 0; for (i = 0; i < 50; i++) { if (iscntrl(i)) printf(" %d %c:是控制字符\n", i, i + 1); else printf("%d %c:不是控制字符\n", i, i + 1); } return 0; }
isspace
判断是否为空白字符
空白字符:空格‘ ’,换页‘\f’,换行’\n’,回车‘\r’,制表符’\t’或者垂直制表符’\v’
如果 c 确实是一个空格字符。返回非0(true), 否则为零(即假)。
#include<stdio.h> #include<string.h> #include<ctype.h> int main() { int i = 9; printf("%d", isspace(i)); return 0; }
isdigit
判断字符是否是0-9
#include<stdio.h> #include<string.h> #include<ctype.h> int main() { int ch; ch = getchar(); if (isdigit(ch)) { printf("%c是数字", ch); } else { printf("NO"); } return 0; }
十进制数字是以下任意一种: 0 1 2 3 4 5 6 7 8 9 有
isxdigit
判断字符是否为十六进制的字母(包含大小写)和数字
十六进制数字是以下任意一种: 0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
是十六进制数就返回非0的数字,否则就返回0;
#include<stdio.h> #include<string.h> #include<ctype.h> #include<stdlib.h> int main() { int i = 48; for (; i < 128; i++) { if (isxdigit(i)) { printf("%c\n", i); } } return 0; }
islower
小写字母是以下任意字母:a b c d e f g h i j k l m n o p q r s t u v w x y z。
如果是小写字母就返回非0的数字,否则就返回0
#include<stdio.h> #include<string.h> #include<ctype.h> #include<stdlib.h> int main() { int i = 97; for (; i <= 122; i++) { if (islower(i)) { printf("%c\n", i); } } return 0; }
isupper
判断字符是否是大写字母
大写字母为以下任意字母:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z。
如果是大写字母就返回非0的数字,否则就返回0
#include<stdio.h> #include<string.h> #include<ctype.h> #include<stdlib.h> int main() { int i = 65; for (; i <= 95; i++) { if (isupper(i)) { printf("%c\n", i); } } return 0; }
isalpha
判断字符是否为字母(包含大小写)
如果是字母就返回非0的数字,否则就返回0
#include<stdio.h> #include<string.h> #include<ctype.h> #include<stdlib.h> int main() { int i = 65; for (; i <= 122; i++) { if (isalpha(i)) { printf("%c\n", i); } } return 0; }
isalnum
判断字符是否是字母或者数字
如果是字母或者是数字就返回非0的数字,否则就返回0
#include<stdio.h> #include<string.h> #include<ctype.h> #include<stdlib.h> int main() { int i = 48; for (; i <= 122; i++) { if (isalnum(i)) { printf("%c\n", i); } } return 0; }
ispunct
检查字符是否为标点字符
如果是标点字符就返回非0的数字,否则就返回0
#include<stdio.h> #include<string.h> #include<ctype.h> #include<stdlib.h> int main() { printf("%d", ispunct('"')); return 0; }
isgraph
判断字符是否具有图形表示
具有图形表示的字符是除空格字符 (’ ') 之外的所有可以打印的字符(由 isprint 确定)。
#include<stdio.h> #include<string.h> #include<ctype.h> #include<stdlib.h> int main() { char arr[] = "abcdefg k"; char* pa = arr; while (*pa) { if (isgraph(*pa)) { printf("%c", *pa); } pa++; } return 0; }
isprint
检查 c 是否为可打印字符
可打印字符是在显示器上占据打印位置的字符(这与控制字符相反,使用 iscntrl 检查)。
#include<stdio.h> #include<string.h> #include<ctype.h> #include<stdlib.h> int main() { char arr[] = "abcdefg k"; char* pa = arr; while (*pa) { if (isprint(*pa)) { printf("%c", *pa); } pa++; } return 0; }
注意这里空格也是符合条件的