Loose-Info.com
Last Update 2023/03/10
TOP - 各種テスト - C言語 - 文字集合

文字集合に関する各種出力例

概要

その1
現在の環境における、基本文字集合(文字セット)の文字コードリスト(実装依存)を出力

その2
トライグラフの出力例

その3
文字集合に含まれるエスケープシーケンスの出力デバイス上での動作


その1

現在の環境における、基本文字集合(文字セット)の文字コードリスト(実装依存)を出力

sample.c
#include <stdio.h> #include <stdlib.h> int main(void) { /* アルファベット */ char c_al[] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' }; /* 10進数字 */ char c_10[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' }; /* 記号文字 */ char c_gr[] = { '!', '"', '#', '%', '&', '\'', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', '\\', ']', '^', '_', '{', '|', '}', '~' }; printf("********** 文字集合の文字コードリスト(実装依存) **********\n\n"); int i; printf("********** アルファベット **********\n"); for (i=0; i<sizeof c_al; i++) { printf("%c --- %02X\t\t\t", c_al[i], c_al[i]); if ((i % 4) == 3) { printf("\n"); } } printf("\n********** 10進数字 **********\n"); for (i=0; i<sizeof c_10; i++) { printf("%c --- %02X\t\t\t", c_10[i], c_10[i]); if ((i % 5) == 4) { printf("\n"); } } printf("\n********** 記号文字 **********\n"); for (i=0; i<sizeof c_gr; i++) { printf("%c --- %02X\t\t\t", c_gr[i], c_gr[i]); if ((i % 5) == 4) { printf("\n"); } } printf("\n\n********** 空白・制御文字 **********\n"); printf(" (空白) --- %02X\n", ' '); printf("\\t (水平タブ) --- %02X\n", '\t'); printf("\\v (垂直タブ) --- %02X\n", '\v'); printf("\\n (改行) --- %02X\n", '\n'); printf("\\f (改ページ) --- %02X\n", '\f'); printf("\\a (アラート) --- %02X\n", '\a'); printf("\\b (バックスペース) --- %02X\n", '\b'); printf("\\r (復帰) --- %02X\n", '\r'); printf("\\0 (null文字) --- %02X\n", '\0'); printf("\n"); return EXIT_SUCCESS; }

実行結果
$ gcc -Wall sample.c $ ./a.out ********** 文字集合の文字コードリスト(実装依存) ********** ********** アルファベット ********** A --- 41 B --- 42 C --- 43 D --- 44 E --- 45 F --- 46 G --- 47 H --- 48 I --- 49 J --- 4A K --- 4B L --- 4C M --- 4D N --- 4E O --- 4F P --- 50 Q --- 51 R --- 52 S --- 53 T --- 54 U --- 55 V --- 56 W --- 57 X --- 58 Y --- 59 Z --- 5A a --- 61 b --- 62 c --- 63 d --- 64 e --- 65 f --- 66 g --- 67 h --- 68 i --- 69 j --- 6A k --- 6B l --- 6C m --- 6D n --- 6E o --- 6F p --- 70 q --- 71 r --- 72 s --- 73 t --- 74 u --- 75 v --- 76 w --- 77 x --- 78 y --- 79 z --- 7A ********** 10進数字 ********** 0 --- 30 1 --- 31 2 --- 32 3 --- 33 4 --- 34 5 --- 35 6 --- 36 7 --- 37 8 --- 38 9 --- 39 ********** 記号文字 ********** ! --- 21 " --- 22 # --- 23 % --- 25 & --- 26 ' --- 27 ( --- 28 ) --- 29 * --- 2A + --- 2B , --- 2C - --- 2D . --- 2E / --- 2F : --- 3A ; --- 3B < --- 3C = --- 3D > --- 3E ? --- 3F [ --- 5B \ --- 5C ] --- 5D ^ --- 5E _ --- 5F { --- 7B | --- 7C } --- 7D ~ --- 7E ********** 空白・制御文字 ********** (空白) --- 20 \t (水平タブ) --- 09 \v (垂直タブ) --- 0B \n (改行) --- 0A \f (改ページ) --- 0C \a (アラート) --- 07 \b (バックスペース) --- 08 \r (復帰) --- 0D \0 (null文字) --- 00

その2

トライグラフの出力例

sample.c
#include <stdio.h> #include <stdlib.h> int main(void) { printf("********** トライグラフ(trigraph sequences) **********\n"); printf("\?\?= --- ??= --- %02X\n", '??='); printf("\?\?( --- ??( --- %02X\n", '??('); printf("\?\?/ --- \??/ --- %02X\n", '\??/'); /* トライグラフが「\」のため置換後「\」でエスケープ */ printf("\?\?) --- ??) --- %02X\n", '??)'); printf("\?\?' --- ??' --- %02X\n", '??''); printf("\?\?< --- ??< --- %02X\n", '??<'); printf("\?\?! --- ??! --- %02X\n", '??!'); printf("\?\?> --- ??> --- %02X\n", '??>'); printf("\?\?- --- ??- --- %02X\n", '??-'); printf("\n"); return EXIT_SUCCESS; }

実行結果
$ gcc -Wall -trigraphs sample.c <--- トライグラフを有効化する-trigraphsオプションを付加してコンパイル sample.c: In function ‘main’: sample.c:7:29: warning: trigraph ??= converted to # [-Wtrigraphs] <--- トライグラフ使用に関する警告 7 | printf("\?\?= --- ??= --- %02X\n", '??='); | | sample.c:14:47: warning: trigraph ??> converted to } [-Wtrigraphs] sample.c:15:29: warning: trigraph ??- converted to ~ [-Wtrigraphs] 15 | printf("\?\?- --- ??- --- %02X\n", '??-'); | sample.c:15:47: warning: trigraph ??- converted to ~ [-Wtrigraphs] $ ./a.out ********** トライグラフ(trigraph sequences) ********** ??= --- # --- 23 ??( --- [ --- 5B ??/ --- \ --- 5C ??) --- ] --- 5D ??' --- ^ --- 5E ??< --- { --- 7B ??! --- | --- 7C ??> --- } --- 7D ??- --- ~ --- 7E

その3

文字集合に含まれるエスケープシーケンスの出力デバイス上での動作

sample.c
#include <stdio.h> #include <stdlib.h> int main(void) { printf("\\aを出力(ベル、画面フラッシュなど) : \a\n"); printf("「abc」の後ろで「\\b」を用いて「c」を削除 : abc\bde\n"); printf("「abc」の後ろで「\\f」を用いて改ページ : abc\fde\n"); printf("「abc」の後ろで「\\n」を用いて改行 : abc\nde\n"); printf("「abc」の後ろで「\\r」を用いて現在行の最初の位置へ移動 : abc\rde\n"); printf("「abc」の後ろで「\\t」を用いて水平タブを挿入 : abc\tde\n"); printf("「abc」の後ろで「\\v」を用いて垂直タブを挿入 : abc\vde\n"); return EXIT_SUCCESS; }

実行結果
$ ./a.out \aを出力(ベル、画面フラッシュなど) : 「abc」の後ろで「\b」を用いて「c」を削除 : abde 「abc」の後ろで「\f」を用いて改ページ : abc de 「abc」の後ろで「\n」を用いて改行 : abc de deabc」の後ろで「\r」を用いて現在行の最初の位置へ移動 : abc 「abc」の後ろで「\t」を用いて水平タブを挿入 : abc de 「abc」の後ろで「\v」を用いて垂直タブを挿入 : abc de

実行環境

GNU bash, version 5.1.16
GCC-12.2.0
GNU C Library 2.36
GNU Binutils 2.39


コード例・出力内容中の表記

・実行例中の太字表記部分は、コマンドなどの入力された文字列を示します。
・「」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。