Last Update 2023/03/10
文字集合に関する各種出力例
概要
現在の環境における、基本文字集合(文字セット)の文字コードリスト(実装依存)を出力
トライグラフの出力例
文字集合に含まれるエスケープシーケンスの出力デバイス上での動作
その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
GCC-12.2.0
GNU C Library 2.36
GNU Binutils 2.39
コード例・出力内容中の表記
・実行例中の太字表記部分は、コマンドなどの入力された文字列を示します。
・「︙」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。
・「︙」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。