まぬねこの足跡。。。

備忘録+たのしさ+ひっそりと

C言語 文字 char型

文字 char型

※最大255種類 全角は非対応

char  c;
char  c = 'a';

ちょこっとメモ

wchar_t型 ワイド(2バイト)文字

#include <wchar.h>、#include <stdlib.h> が必要
全角対応。

char16_t型、char32_t型

#include <uchar.h> が必要
全角対応。

マルチ文字列→ワイド文字列の変換

mbstowcs(ワイド文字列, マルチ文字列, ワイド文字数)
※文字列の変換には、ロケール setlocale()に依存

マルチ文字列←ワイド文字列の変換

wcstombs(マルチ文字列, ワイド文字列, マルチ文字数)
※文字列の変換には、ロケール setlocale()に依存

ロケール setlocale()

#include <locale.h>
setlocale( LC_CTYPE, "jpn" )を設定する

文字型で計算 文字コード操作

英小文字↔英大文字 相互変換

英大文字 = 英小文字 - 0x20
英小文字 = 英大文字 + 0x20

char c = 'a' - 0x20; 
printf("%c\n", c); ←「英小文字→大文字」に変換
char C = 'A' + 0x20; 
printf("%c=%d\n",s + 0x30, s + 0x30); ←「英大文字→小文字」に変換

表示イメージ

A ←英大文字
a ←英小文字

数値↔文字コード 相互変換

文字コード = 数字 - 0x30 ※’0’=0x30
数値 = 文字コード + 0x30

char c = '8';  ←数字(文字列)
printf("%d\n",c - 0x30); ←「数字(文字列)→文字コード」に変換
char s = 0x8; ←文字コード
char kazu = s + 0x30; ←「文字コード→数字(文字列)」に変換
printf("%c = %x\n", kazu , kazu);

表示イメージ

8 ←文字コード
8 = 38 ←数字(文字列):8=0x38

文字種類判定関数

#include <ctype.h> すること。

名前 文字種類 文字一覧
isalnum(判定文字) 英大小数 A~Z a~z 0~9
isdigit(判定文字) 10進数 0~9
isxdigit(判定文字) 16進数 A~F a~f 0~9
isalpha(判定文字) 英大小 A~Z a~z
isupper(判定文字) 英大文 A~Z
islower(判定文字) 英小文 a~z
ispunct(判定文字) 記号
isspace(判定文字) スペース