C语言isupper函数如何判断字母是否为大写?

99ANYc3cd6
预计阅读时长 13 分钟
位置: 首页 C语言 正文

函数概述

isupper 是 C 标准库中的一个函数,用于检查一个给定的字符是否为大写字母

c语言 isupper函数
(图片来源网络,侵删)
  • 头文件: 为了使用 isupper 函数,你需要包含 <ctype.h> 头文件。
  • 函数原型:
    int isupper(int c);
  • 功能: 判断字符 c 是否是 'A' 到 'Z' 之间的字母。
  • 返回值:
    • c 是一个大写字母,函数返回非零值(通常是 1,但标准规定为非零,具体值可能因实现而异)。
    • c 不是大写字母,函数返回 0

使用示例

下面是一个简单的例子,演示如何使用 isupper 函数。

#include <stdio.h>
#include <ctype.h> // 必须包含此头文件
int main() {
    char ch1 = 'A';
    char ch2 = 'z';
    char ch3 = '5';
    char ch4 = '$';
    // 检查 ch1
    if (isupper(ch1)) {
        printf("'%c' 是一个大写字母,\n", ch1);
    } else {
        printf("'%c' 不是一个大写字母,\n", ch1);
    }
    // 检查 ch2
    if (isupper(ch2)) {
        printf("'%c' 是一个大写字母,\n", ch2);
    } else {
        printf("'%c' 不是一个大写字母,\n", ch2);
    }
    // 检查 ch3
    if (isupper(ch3)) {
        printf("'%c' 是一个大写字母,\n", ch3);
    } else {
        printf("'%c' 不是一个大写字母,\n", ch3);
    }
    // 检查 ch4
    if (isupper(ch4)) {
        printf("'%c' 是一个大写字母,\n", ch4);
    } else {
        printf("'%c' 不是一个大写字母,\n", ch4);
    }
    return 0;
}

输出结果:

'A' 是一个大写字母。
'z' 不是一个大写字母。
'5' 不是一个大写字母。
'$' 不是一个大写字母。

参数类型 int 的说明

你可能会注意到,isupper 的参数类型是 int,而不是 char,这是 C 语言标准库中字符函数的一个常见特点。

  • 为什么是 int

    c语言 isupper函数
    (图片来源网络,侵删)
    1. 可传递 EOF: int 类型可以容纳 EOF (End-Of-File, 通常是 -1),这使得这些函数可以处理文件流的结束符。
    2. 符号扩展: 在某些系统上,char 类型可能是 signed char(-128到127),当将一个 char 传递给一个期望 int 的函数时,char 的最高位是1(即值为负数),会发生“符号扩展”,导致 int 的高位全部被填充为1,如果函数内部将这个 int 值当作一个无符号的字符值来处理(即只看低8位),结果就是正确的,将参数声明为 int 可以确保这种行为符合标准。
  • 如何调用? 尽管参数是 int,但你仍然可以直接传入 char 类型的变量,C 语言会自动进行整数提升,将 char 转换为 int

    char c = 'G';
    int result = isupper(c); // 完全正确,c 会被提升为 int

    你也可以直接传入字符的字面量(会被自动视为 int):

    int result = isupper('H'); // 正确

isupper 相关的函数

isupper 属于一个庞大的字符分类函数家族,它们都在 <ctype.h> 中声明,这些函数的用法和返回值规则都类似。

函数名 功能 检查范围
isupper(c) 是否为大写字母 'A' - 'Z'
islower(c) 是否为小写字母 'a' - 'z'
isalpha(c) 是否为字母 (大写或小写) 'A'-'Z', 'a'-'z'
isdigit(c) 是否为十进制数字 '0' - '9'
isalnum(c) 是否为字母或数字 isalpha(c) \|\| isdigit(c)
isspace(c) 是否为空白字符 ` (空格),\t\n\v\f\r`
ispunct(c) 是否为标点符号 ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ { | } ~`
isxdigit(c) 是否为十六进制数字 0-9, A-F, a-f
isprint(c) 是否为可打印字符 ` (空格) 到~`
isgraph(c) 是否为可打印字符(不含空格)
iscntrl(c) 是否为控制字符 ASCII 0x00-0x1F 和 0x7F
tolower(c) 如果是大写字母,转换为小写 -
toupper(c) 如果是小写字母,转换为大写 -

实际应用场景

isupper 函数在实际编程中非常常用,尤其是在处理文本输入时。

c语言 isupper函数
(图片来源网络,侵删)

示例:统计一行文本中的大写字母数量

#include <stdio.h>
#include <ctype.h>
int main() {
    char str[100];
    int uppercase_count = 0;
    printf("请输入一行文本: ");
    // 使用 fgets 安全地读取一行,包括空格
    fgets(str, sizeof(str), stdin);
    // 遍历字符串,直到遇到字符串结束符 '\0'
    for (int i = 0; str[i] != '\0'; i++) {
        // 检查当前字符是否是大写字母
        if (isupper(str[i])) {
            uppercase_count++;
        }
    }
    printf("输入的文本中包含 %d 个大写字母,\n", uppercase_count);
    return 0;
}

运行示例:

请输入一行文本: Hello World! This is a Test.
输入的文本中包含 5 个大写字母。
  • 用途: 判断一个字符是否为大写字母。
  • 头文件: <ctype.h>
  • 返回值: 是大写字母返回非零,否则返回0。
  • 注意: 参数是 int 类型,但可以直接传入 char 或字符字面量。
  • 核心思想: isupper 是字符分类函数家族的一员,是处理文本数据的基础工具。
-- 展开阅读全文 --
头像
织梦cms测试数据包如何获取与使用?
« 上一篇 02-25
dede pagesize怎么设置?分页大小如何调整?
下一篇 » 02-25

相关文章

取消
微信二维码
支付宝二维码

目录[+]