字符分类函数
字符分类函数
C语言中有一系列的函数是专门做字符分类的,也就是一个字符是属于什么类型的字符。这些函数都是需要包含一个头文件是 ctype.h
iscntrl函数
int iscntrl(int c);
iscntrl 是能够判断参数部分的 c 是否是控制字符。
通过返回值来说明是否是控制字符,如果是控制字符就返回非0的整数,如果不是控制字符,则返回0。
什么是控制字符呢
- ASCII码是0-31、127(删除键)是控制字符
- 空白字符:空格(32)、 制表符、 垂直制表符、 换行、 回车、换页。
- 可显示字符:a-z、A-Z、0-9、~、!、@、、%、^、&、#、$、*、(、)、-、+、{、}、[、]、'、"、<、>、,、?、/、|、\、_、:、;、.,还有顿号、。
- 控制字符是指那些具有某种特殊功能、不会显示在屏幕上、不会占用字符位置的特殊字符。无法在屏幕上打印的字符称为控制字符。例如,退格键,转义符,换行符等。
- 控制字符和可打印字符是相对的,可打印字符是指那些会显示在屏幕上、会占用字符位置的“普通”字符。
通过代码来理解:
#include <stdio.h>
#include <ctype.h>
int main()
{
int i = 0;
for (i = 1; i <= 127; i++)
{
if (iscntrl(i))
printf("%d是控制字符\n", i);
}
return 0;
}
#include <stdio.h>
#include <ctype.h>
int main()
{
int i = 0;
char str[] = "@666BUFA\n\t 10";
printf("控制字符是:\n");
for (i = 1; str[i] != '\0'; i++)
{
if (iscntrl(str[i]))
printf("str[%d],ASCII码是%d\n", i, str[i]);
}
return 0;
}
isspace函数
int isspace(int c);
isspace 是能够判断参数部分的 c 是否是空白字符。
通过返回值来说明是否是空白字符,如果是控制字符就返回非0的整数,如果不是空白字符,则返回0。
- 空白字符:空格(32)、 水平制表符(9)、换行(10) 、 垂直制表符(11)、 换页(12)、回车(13)。
通过代码来理解:
#include <stdio.h>
#include <ctype.h>
int main()
{
int i = 0;
for (i = 1; i <= 127; i++)
{
if (isspace(i))
printf("%d是空白字符\n", i);
}
return 0;
}
#include <stdio.h>
#include <ctype.h>
int main()
{
int i = 0;
char str[] = "@666BUFA\n\t 10";
printf("空白字符是:\n");
for (i = 1; str[i] != '\0'; i++)
{
if (isspace(str[i]))
printf("str[%d],ASCII码是%d\n", i, str[i]);
}
return 0;
}
isdigit函数
int isdigit(int c);
isdigit 是能够判断参数部分的 c 是否是十进制数字字符0 ~ 9。
通过返回值来说明是否是十进制数字字符0 ~ 9,如果是十进制数字字符0 ~ 9就返回非0的整数,如果不是十进制数字字符0 ~ 9,则返回0。
注意: 是字符0 ~ 9,而不是ASCII码。
通过代码来理解:
#include <stdio.h>
#include <ctype.h>
int main()
{
int i = 0;
for (i = 1; i <= 127; i++)
{
if (isdigit(i))
printf("%c,ASCII码是%d\n", i, i);
}
return 0;
}
#include <stdio.h>
#include <ctype.h>
int main()
{
int i = 0;
char str[] = "@666BUFA\n\t 10";
printf("是十进制数字字符0~9:\n");
for (i = 1; str[i] != '\0'; i++)
{
if (isdigit(str[i]))
printf("str[%d] = %c,ASCII码是%d\n", i, str[i], str[i]);
}
return 0;
}
isxdigit函数
int isxdigit(int c);
isxdigit 是能够判断参数部分的 c 是否是十六进制数字字符(包括所有十进制数字字符,小写字母字符a ~ f,大写字母字符A ~ F)。
通过返回值来说明是否是十六进制数字字符,如果是十六进制数字字符就返回非0的整数,如果不是十六进制数字字符,则返回0。
通过代码来理解:
#include <stdio.h>
#include <ctype.h>
int main()
{
int i = 0;
for (i = 1; i <= 127; i++)
{
if (isxdigit(i))
printf("%c,ASCII码是%d\n", i, i);
}
return 0;
}
#include <stdio.h>
#include <ctype.h>
int main()
{
int i = 0;
char str[] = "@666BUFA\n\t 10";
printf("是十六进制数字字符:\n");
for (i = 1; str[i] != '\0'; i++)
{
if (isxdigit(str[i]))
printf("str[%d] = %c,ASCII码是%d\n", i, str[i], str[i]);
}
return 0;
}
islower函数
int islower( int c );
islower 是能够判断参数部分的 c 是否是小写字母字符
通过返回值来说明是否是小写字母字符,如果是小写字母字符就返回非0的整数,如果不是小写字母字符,则返回0。
通过写一个代码,将字符串中的小写字母转大写,其他字符不变的练习代码来理解.
#include <stdio.h>
#include <ctype.h>
int main()
{
int i = 0;
char str[] = "Onward And Upward";
char c = 0;
while (str[i] != '\0')
{
c = str[i];
if (islower(c))
c -= 32;//小写字母在ASCII表中值比对应的大写字母大32
putchar(c);
i++;
}
return 0;
}
isupper函数
int isupper( int c );
isupper 是能够判断参数部分的 c 是否是大写字母字符
通过返回值来说明是否是大写字母字符,如果是大写字母字符就返回非0的整数,如果不是大写字母字符,则返回0。
通过写一个代码,将字符串中的大写字母转小写,其他字符不变的练习代码来理解.
#include <stdio.h>
#include <ctype.h>
int main()
{
int i = 0;
char str[] = "LIFE AND LEARN";
char c = 0;
while (str[i] != '\0')
{
c = str[i];
if (isupper(c))
c += 32;//大写字母在ASCII表中值比对应的小写字母小32
putchar(c);
i++;
}
return 0;
}
isalpha函数
int isalpha( int c );
isalpha 是能够判断参数部分的 c 是否是字母字符(包括a ~ z或A ~ Z)
通过返回值来说明是否是字母字符,如果是字母字符就返回非0的整数,如果不是字母字符,则返回0。
通过一段代码来理解:
#include <stdio.h>
#include <ctype.h>
int main()
{
char str[] = "@Man Come On!666";
int i = 0;
while (str[i])
{
if (isalpha(str[i]))
printf("%c", str[i]);
i++;
}
return 0;
}
isalnum函数
int isalnum( int c );
isalnum 是能够判断参数部分的 c 是否是字母或数字字符(包括a ~ z或A ~ Z或0 ~ 9)
通过返回值来说明是否是字母或数字字符,如果是字母或数字字符就返回非0的整数,如果不是字母或数字字符,则返回0。
通过代码来理解:
#include <stdio.h>
#include <ctype.h>
int main()
{
char str[] = "@Man Come On!666";
int i = 0;
while (str[i])
{
if (isalnum(str[i]))
printf("%c", str[i]);
i++;
}
return 0;
}
ispunct函数
int ispunct( int c );
ispunct 是能够判断参数部分的 c 是否是标点符号,任何不属于数字或字母或空白符的图形字符(可打印)
通过返回值来说明是否是标点符号,如果是标点符号就返回非0的整数,如果不是标点符号,则返回0。
通过代码来理解:
#include <stdio.h>
#include <ctype.h>
int main()
{
char str[] = "@Man Come On!!!^-^666";
int i = 0;
while (str[i])
{
if (ispunct(str[i]))
printf("%c", str[i]);
i++;
}
return 0;
}
isgraph函数
int isgraph(int c);
isgraph 是能够判断参数部分的 c 是否是任何图形字符,任何不属于空白符的图形字符(可打印)
通过返回值来说明是否是任何图形字符,如果是任何图形字符就返回非0的整数,如果不是任何图形字符,则返回0。
通过代码来理解:
#include <stdio.h>
#include <ctype.h>
int main()
{
char str[] = "@Man Come On!!!^-^666";
int i = 0;
while (str[i])
{
if (isgraph(str[i]))
printf("%c", str[i]);
i++;
}
return 0;
}
isprint函数
int isprint( int c );
isprint 是能够判断参数部分的 c 是否是任何可打印字符.
通过返回值来说明是否是任何可打印字符,如果任何可打印字符就返回非0的整数,如果不任何可打印字符,则返回0。
通过代码来理解:
#include <stdio.h>
#include <ctype.h>
int main()
{
char str[] = "@Man Come On!!!^-^666\n";
int i = 0;
while (str[i])
{
if (isprint(str[i]))
printf("%c", str[i]);
i++;
}
return 0;
}
注意: 换行字符(\n) 是控制字符,不是打印字符,所以最终程序结果并没有出现换行.
好了,字符分类函数就讲到这里,希望对大家的学习有所帮助.