Namespaces
Variants

toupper

From cppreference.net
< c ‎ | string ‎ | byte
ヘッダーで定義 <ctype.h>
int toupper ( int ch ) ;

指定された文字を、現在インストールされているCロケールで定義された文字変換規則に従って大文字に変換します。

デフォルトの "C" ロケールでは、以下の小文字 abcdefghijklmnopqrstuvwxyz が対応する大文字 ABCDEFGHIJKLMNOPQRSTUVWXYZ に置換されます。

目次

パラメータ

ch - 変換される文字。もし ch の値が unsigned char として表現できず、かつ EOF と等しくない場合、動作は未定義です。

戻り値

現在のCロケールに大文字バージョンが登録されていない場合は、 ch の大文字バージョン、または変更されていない ch を返します。

#include <ctype.h>
#include <limits.h>
#include <locale.h>
#include <stdio.h>
int main(void)
{
    // デフォルトロケールの場合:
    for (unsigned char l = 0, u; l != UCHAR_MAX; ++l)
        if ((u = toupper(l)) != l)
            printf("%c%c ", l, u);
    printf("\n\n");
    unsigned char c = '\xb8'; // ISO-8859-15における文字ž
                              // ISO-8859-1では ¸ (セディーユ)
    setlocale(LC_ALL, "en_US.iso88591");
    printf("in iso8859-1, toupper('0x%x') gives 0x%x\n", c, toupper(c));
    setlocale(LC_ALL, "en_US.iso885915");
    printf("in iso8859-15, toupper('0x%x') gives 0x%x\n", c, toupper(c));
}

出力例:

aA bB cC dD eE fF gG hH iI jJ kK lL mM nN oO pP qQ rR sS tT uU vV wW xX yY zZ
in iso8859-1, toupper('0xb8') gives 0xb8
in iso8859-15, toupper('0xb8') gives 0xb4

参考文献

  • C23規格 (ISO/IEC 9899:2024):
  • 7.4.2.2 toupper関数 (p: TBD)
  • C17規格 (ISO/IEC 9899:2018):
  • 7.4.2.2 toupper関数 (p: 147-148)
  • C11標準 (ISO/IEC 9899:2011):
  • 7.4.2.2 toupper関数 (p: 204)
  • C99規格 (ISO/IEC 9899:1999):
  • 7.4.2.2 toupper関数 (p: 185)
  • C89/C90標準 (ISO/IEC 9899:1990):
  • 4.3.2.2 toupper関数

関連項目

文字を小文字に変換する
(関数)
ワイド文字を大文字に変換する
(関数)