C isprint() 语法
isprint() 是 C 语言 <ctype.h> 标准库的一个函数,用于判断字符是否为可打印字符。所谓的 “可打印字符”,指的是能够占据打印位置的字符。
注意: 空格(' ')是可打印字符,而换行符('\n')、水平制表符('\t')等并不是可打印字符。
语法:
isprint(c)说明:
isprint() 函数接收单个参数。
c (int):是一个字符。虽然是 int 类型,但它的值必须能够表示为一个 unsigned char,或者等于 EOF。
isprint() 函数返回一个 int 类型的值,来表示判断结果。
- 如果参数 c 是一个可打印字符(根据当前区域设置),则返回一个非零值(表示 “真”)。
- 否则,返回 0(表示 “假”)。
提示: isprint 指的是 “is print”。
C isprint() 摘要
| 使用频率 | 中 |
|---|---|
| 修改字符串 | 否 |
| 官方文档 | 查看 |
C isprint() 示例
接下来,我们通过几个简单的例子来讲解一下 C isprint() 函数是如何使用的。
示例 1:isprint() 判断可打印字符(包括空格)
#include <stdio.h>
#include <ctype.h>
int main(void)
{
char ch1 = 'X';
char ch2 = '8';
char ch3 = '$';
char ch4 = ' ';
if (isprint(ch1)) {
printf("'%c' 是可打印字符。\n", ch1);
} else {
printf("'%c' 不是可打印字符。\n", ch1);
}
if (isprint(ch2)) {
printf("'%c' 是可打印字符。\n", ch2);
} else {
printf("'%c' 不是可打印字符。\n", ch2);
}
if (isprint(ch3)) {
printf("'%c' 是可打印字符。\n", ch3);
} else {
printf("'%c' 不是可打印字符。\n", ch3);
}
if (isprint(ch4)) {
printf("'%c'(空格)是可打印字符。\n", ch4);
} else {
printf("'%c'(空格)不是可打印字符。\n", ch4);
}
return 0;
}运行结果如下。
'X' 是可打印字符。
'8' 是可打印字符。
'$' 是可打印字符。
' '(空格)是可打印字符。分析:
如果参数是字母、数字、标点符号和空格等可打印字符,那么 isprint() 会返回一个非零值(表示 “真”)。
示例 2:isprint() 判断控制字符
#include <stdio.h>
#include <ctype.h>
int main(void)
{
char ch1 = '\n'; // 换行符 (控制字符)
char ch2 = '\t'; // 水平制表符 (控制字符)
char ch3 = '\0'; // 空(控制字符)
if (isprint(ch1)) {
printf("'\\n' (换行符) 是可打印字符。\n");
} else {
printf("'\\n' (换行符) 不是可打印字符。\n");
}
if (isprint(ch2)) {
printf("'\\t' (制表符) 是可打印字符。\n");
} else {
printf("'\\t' (制表符) 不是可打印字符。\n");
}
if (isprint(ch3)) {
printf("'\\0' (空字符) 是可打印字符。\n");
} else {
printf("'\\0' (空字符) 不是可打印字符。\n");
}
return 0;
}运行结果如下。
'\n' (换行符) 不是可打印字符。
'\t' (制表符) 不是可打印字符。
'\0' (空字符) 不是可打印字符。分析:
控制字符通常不会在屏幕上显示可见的符号,而是用于控制格式或设备行为。因此如果参数是控制字符,此时 isprint() 会返回 0(表示 “假”)。
示例 3:isprint() 处理 EOF
#include <stdio.h>
#include <ctype.h>
int main(void)
{
int result;
result = isprint(EOF);
printf("%d\n", result);
return 0;
}运行结果如下。
0分析:
如果 isprint() 的参数是 EOF,那么它会返回 0。
深入了解 isprint()
isprint() 函数的行为会受到当前区域设置 (locale) 的影响。在默认的 "C" 区域设置下,它会将 ASCII 值 在 “32~126” 范围内的字符识别为可打印字符。在其他区域设置下,可能会有额外的字符被定义为可打印字符。
isprint() 与 isgraph() 函数非常相似,唯一的区别在于:isprint() 会将空格 (' ') 视作可打印字符,而 isgraph() 不包含空格。如果需要判断除了空格以外的具有可见图形表示的字符,我们应该使用 isgraph()。
需要注意的是,虽然 isprint() 的参数 c 写的是 int 类型,但我们必须传入一个字符(比如 'a'、'B' 等),或者输入特殊的 EOF 值(常用于文件结束判断)。如果传入一个负数(除了 EOF),则可能会导致未定义行为。
