C isspace() 函数

C isspace() 语法

isspace() 是 C 语言 <ctype.h> 标准库的一个函数,用于判断给定的字符是否是空白字符。

在默认的 "C" 或 "POSIX" 区域设置下,标准的空白字符主要有以下几种。

  • 空格 (' ')。
  • 换行符 ('\n')。
  • 回车符 ('\r')。
  • 换页符 ('\f')。
  • 水平制表符 ('\t')。
  • 垂直制表符 ('\v')。

语法:

isspace(c)

说明:

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

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

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

  • 如果参数 c 是一个空白字符,则返回一个非零值(表示 “真”)。
  • 否则,返回 0(表示 “假”)。

提示: isspace 指的是 “is space”。

C isspace() 摘要

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

C isspace() 示例

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

示例 1:isspace() 判断各种空白字符

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

int main(void)
{
    char space = ' ';         // 空格
    char newline = '\n';      // 换行符
    char tab = '\t';          // 水平制表符
    char form_feed = '\f';    // 换页符

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

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

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

    if (isspace(form_feed)) {
        printf("'\\f' (换页符) 是空白字符。\n");
    } else {
        printf("'\\f' (换页符) 不是空白字符。\n");
    }

    return 0;
}

运行结果如下。

' ' (空格) 是空白字符。
'\n' (换行符) 是空白字符。
'\t' (制表符) 是空白字符。
'\f' (换页符) 是空白字符。

分析:

如果参数是标准空白字符(包括空格、换行符、制表符和换页符等),那么 isspace() 会返回一个非零值(表示 “真”)。

示例 2:isspace() 判断非空白字符

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

int main(void)
{
    char ch1 = 'e';
    char ch2 = '6';
    char ch3 = '.';

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

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

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

    return 0;
}

运行结果如下。

'e' 不是空白字符。
'6' 不是空白字符。
'.' 不是空白字符。

分析:

如果参数是字母、数字和标点符号等非空白字符,那么 isspace() 会返回 0(表示 “假”)。

示例 3:isspace() 计算字符串中的空白字符数量

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

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

    for (int i = 0; str[i] != '\0'; i++) {
        if (isspace((unsigned char)str[i])) {
            count++;
        }
    }
    printf("%d\n", count);

    return 0;
}

运行结果如下。

4

分析:

在这个例子中,我们使用for循环 来遍历字符串的每一个字符。然后,在循环中使用 isspace() 来判断当前字符是否为空白字符。如果是,则 count 加 1。最终得到的 count,就是字符串中的空白字符数量。

示例 4:isspace() 处理 EOF

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

int main(void) {
    int result;

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

    return 0;
}

运行结果如下。

0

分析:

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

深入了解 isspace()

isspace() 函数的行为会受到当前区域设置 (locale) 的影响。在默认的 "C" 或 "POSIX" 区域设置下,它识别前面列出的六种标准空白字符。在其他区域设置下,可能会根据该区域设置的定义将其他字符也视为空白字符。

isspace() 识别的空白字符范围比 isblank() 更加广泛。isblank() 通常只会识别空格 (' ') 和水平制表符 ('\t'),它们主要用于分隔同一行中的单词。而 isspace() 还包括换行符、回车符、换页符和垂直制表符等,这些字符通常用于格式化文本的布局,如分隔行或页面。

如果只需要识别用于分隔单词的空白,我们应该使用 isblank()。如果需要识别所有影响文本布局的空白,我们应该使用 isspace()。

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

上一篇: islower()

下一篇: isblank()

给站长反馈

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

邮箱:lvyenet@vip.qq.com

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