C isgraph() 函数

C isgraph() 语法

isgraph() 是 C 语言 <ctype.h> 标准库的一个函数,用于判断字符是否为图形字符。所谓的 “图形字符” ,指的是除了不可见字符(如空格、制表符、换行符、换页符等)之外的所有字符。

语法:

isgraph(c)

说明:

isgraph() 函数接收单个参数。

  • c (int):是一个字符。虽然是 int 类型,但它的值必须能够表示为一个 unsigned char,或者等于 EOF。

isgraph() 函数返回一个 int 类型的值,来表示判断结果。

  • 如果参数 c 是一个可打印字符(根据当前区域设置),但不是空格 (' '),则返回一个非零值(表示 “真”)。
  • 否则,返回 0(表示 “假”)。

提示: isgraph 指的是 “is graph”。

C isgraph() 摘要

使用频率
修改字符串
官方文档 查看

C isgraph() 示例

接下来,我们通过几个简单的例子来讲解一下 C isgraph() 函数是如何使用的。

示例 1:isgraph() 判断图形字符

#include <stdio.h>
#include <ctype.h>

int main(void)
{
    char ch1 = 'L';
    char ch2 = '6';
    char ch3 = '@';

    if (isgraph(ch1)) {
        printf("'%c' 是图形字符。\n", ch1);
    } else {
        printf("'%c' 不是图形字符。\n", ch1);
    }

    if (isgraph(ch2)) {
        printf("'%c' 是图形字符。\n", ch2);
    } else {
        printf("'%c' 不是图形字符。\n", ch2);
    }

    if (isgraph(ch3)) {
        printf("'%c' 是图形字符。\n", ch3);
    } else {
        printf("'%c' 不是图形字符。\n", ch3);
    }

    return 0;
}

运行结果如下。

'L' 是图形字符。
'6' 是图形字符。
'@' 是图形字符。

分析:

如果参数是字母、数字和标点符号等具有可见表示的字符,则 isgraph() 会返回一个非零值(表示 “真”)。

示例 2:isgraph() 判断非图形字符(包括空格)

#include <stdio.h>
#include <ctype.h>

int main(void)
{
    char space = ' ';         // 空格
    char newline = '\n';      // 换行符 (控制字符)
    char null_char = '\0';    // 空(控制字符)

    if (isgraph(space)) {
        printf("'%c' (空格) 是图形字符。\n", space);
    } else {
        printf("'%c' (空格) 不是图形字符。\n", space);
    }

    if (isgraph(newline)) {
        printf("'\\n' (换行符) 是图形字符。\n");
    } else {
        printf("'\\n' (换行符) 不是图形字符。\n");
    }

    if (isgraph(null_char)) {
        printf("'\\0' (空字符) 是图形字符。\n");
    } else {
        printf("'\\0' (空字符) 不是图形字符。\n");
    }

    return 0;
}

运行结果如下。

' ' (空格) 不是图形字符。
'\n' (换行符) 不是图形字符。
'\0' (空字符) 不是图形字符。

分析:

如果参数是空格('')、换行符('\n')、水平制表符('\t')等空白字符,那么 isgraph() 会返回 0(表示 “假”)。

示例 3:isgraph() 处理 EOF

#include <stdio.h>
#include <ctype.h>

int main(void)
{
    int result;

    result = isgraph(EOF);
    printf("%d\n", result);

    return 0;
}

运行结果如下。

0

分析:

如果 isgraph() 的参数是 EOF,它会返回 0。

深入了解 isgraph()

isgraph() 函数的行为会受到当前区域设置 (locale) 的影响。在默认的 "C" 区域设置下,它会将 ASCII 值 在 “33 ~ 126” 范围内的非空格字符识别为图形字符。而在其他区域设置下,可能会有额外的字符被定义为图形字符。

isgraph() 与 isprint() 函数非常相似,唯一的区别在于:isprint() 是包含空格 (' '),而 isgraph() 不包含空格。如果需要判断包括空格在内的所有可打印字符,此时我们应该使用 isprint()。

需要注意的是,虽然 isgraph() 的参数 c 写的是 int 类型,但我们必须传入一个字符(比如 'a'、'B' 等),或者输入特殊的 EOF 值(常用于文件结束判断)。如果传入一个负数(除了 EOF),则可能会导致未定义行为。

上一篇: isblank()

下一篇: isprint()

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号