C isblank() 函数

C isblank() 语法

isblank() 是 C 语言 <ctype.h> 标准库的一个函数,用于判断字符是否为空格(' ')或水平制表符('\t')。

需要注意的是,isblank() 只会识别空格(' ')或水平制表符('\t')这 2 种,它们主要用于分隔同一行中的单词。而 isspace() 除了可以识别这几种之外,还可以识别其他空白符(包括换行符、换页符、垂直制表符等)。

语法:

isblank(str)

说明:

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

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

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

  • 如果参数 c 是一个空格(' ')或水平制表符('\t'),则返回一个非零值(表示 “真”)。
  • 否则,返回 0(表示 “假”)。

提示: isblank 指的是 “is blank” 。

C isblank() 摘要

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

C isblank() 示例

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

示例 1:isblank() 判断空格和水平制表符

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

int main(void)
{
    char ch1 = ' ';
    char ch2 = '\t';

    if (isblank(ch1)) {
        printf("' ' (空格) 是空白字符。\n");
    } else {
        printf("' ' (空格) 不是空白字符。\n");
    }

    if (isblank(ch2)) {
        printf("'\\t' (制表符) 是空白字符。\n");
    } else {
        printf("'\\t' (制表符) 不是空白字符。\n");
    }

    return 0;
}

运行结果如下。

' ' (空格) 是空白字符。
'\t' (制表符) 是空白字符。

分析:

只有当参数是空格(' ')或水平制表符('\t')时,isblank() 才会返回一个非零值(表示 “真”)。

示例 2:isblank() 判断其他空白字符和非空白字符

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

int main(void)
{
    char ch1 = '\n';       // 换行符
    char ch2 = '\v';       // 垂直制表符
    char ch3 = '8';
    char ch4 = 'X';

    if (isblank(ch1)) {
        printf("'\\n' (换行符) 是空白字符。\n");
    } else {
        printf("'\\n' (换行符) 不是空白字符。\n");
    }

    if (isblank(ch2)) {
        printf("'\\v' (垂直制表符) 是空白字符。\n");
    } else {
        printf("'\\v' (垂直制表符) 不是空白字符。\n");
    }

    if (isblank(ch3)) {
        printf("'%c' 是空白字符。\n", ch3);
    } else {
        printf("'%c' 不是空白字符。\n", ch3);
    }

    if (isblank(ch4)) {
        printf("'%c' 是空白字符。\n", ch4);
    } else {
        printf("'%c' 不是空白字符。\n", ch4);
    }

    return 0;
}

运行结果如下。

'\n' (换行符) 不是空白字符。
'\v' (垂直制表符) 不是空白字符。
'8' 不是空白字符。
'X' 不是空白字符。

分析:

如果参数是除了空格(' ')和水平制表符('\t')之外的所有字符,isblank() 都会返回 0。

示例 3:isblank() 在字符串中查找空白字符

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

int main(void)
{
    char str[] = "绿叶网\v 为好\n教程 全力\t以赴";
    int i;

    for (i = 0; str[i] != '\0'; i++) {
        if (isblank((unsigned char)str[i])) {
            printf("ASCII:%d, 位置:%d\n", str[i], i);
        }
    }

    return 0;
}

运行结果如下。

ASCII:32, 位置:10
ASCII:32, 位置:24
ASCII:9, 位置:31

分析:

在这个例子中,我们使用for循环 来遍历字符串的每一个字符。然后,在循环中使用 isblank() 来判断当前字符是否为空格或水平制表符。如果是,则获取该字符的 ASCII码,以及对应的索引。

注意: 中文字符通常占用多个字节(UTF-8 编码下通常为 3 字节)

示例 4:isblank() 处理 EOF

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

int main(void)
{
    int result;

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

    return 0;
}

运行结果如下。

0

分析:

如果 isblank() 的参数是 EOF,那么它总是返回 0。

深入了解 isblank()

isblank() 函数的行为会受到当前区域设置 (locale) 的影响。在默认的 "C" 和 "POSIX" 区域设置下,它只会将空格 (' ') 和水平制表符 ('\t') 识别为空白字符。在其他区域设置下,可能会有其他字符被定义为 isblank() 返回真的空白字符。但一般来说,空格和水平制表符是普遍被识别的标准空白字符。

isblank() 的主要用途是识别 “用于分隔文本行中单词的空白字符” 。而 isspace() 能够识别更广泛的空白字符,包括换行符、回车符、垂直制表符和换页符等。如果需要判断任何类型的空白字符,我们应该使用 isspace()。如果只需要判断空格和水平制表符,则使用 isblank() 更加准确。

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

注意: isblank() 是 C99 标准引入的函数,因此在较旧的 C 标准(如 C89/C90)中可能不可用。

上一篇: isspace()

下一篇: isgraph()

给站长反馈

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

邮箱:lvyenet@vip.qq.com

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