C言語学習(1) 文字を扱う
2016/01/06
コンピュータで文字を扱おう。
今回の目的は「文字を保存・加工」する。
まず理解しておくべきことは、文字というデータ型はないということ。では,どうやって文字を扱ったらいいのでしょう?悩みます。
実はコンピュータでは文字を整数値として扱うのです。
つまり、
1だったらA
2だったらB・・という風に数値は文字と対応しています。
この対応表のことを文字コードといいます。
C言語で扱うのはASCIIコードを使います。
ほかにも文字コードはたくさんあります。
(例) SHIFT-JIS(win) EUC(mac) Unicode etc
そして数値を文字として表示させる際、変換指定子は%cを使います。
%c・・文字として表示させる(ASCIIコード)
void main(void)
{
printf(“ASCII:%c\n” ,65);
}
[実行結果] ASCII:A
では下記はどのように表示されるでしょう?
void main(void)
{
int c;
c=65;
c++;
printf(“ASCII:%d(%c)\n” ,c,c);
}
[実行結果] ASCII:B
文字が数値として扱われているのがよくわかります。
下記のプログラムはAからZまで表示します。
void main(void)
{
int c;
for(c=65; c<=90; c++)
{
printf(“%d: %c\n”, c, c);
}
}
キーボードからの文字入力
下記プログラムで文字「例えば a 」を入力しても思ったように動いてくれません。
なぜでしょうか?
void main(void)
{
int c;
printf(“文字を入力してください:”);
scanf(“%d” ,&c);
printf(“%d:%c\n”, c,c);
}
scanf関数 は 入力された値を適切な値に変換してくれます。
もともとキーボードからの入力は「文字」を入力するものですよね。
下記は入力された値を整数として扱う。
scanf(“%d” , &inputNum);
下記は入力された値をそのまま文字として扱う。
scanf(“%c” , &inputNum);
下記のプログラムでは入力された文字とそのASCIIコードを表示します。
void main(void)
{
int c = 0;
printf(“文字を入力してください:”);
scanf(“%c” , &c);
printf(”%c(%d)\n”,c,c);
}
文字定数を使うとさらに便利に。
下記はまったく同じ意味です。
int c;
c = 65;
int c;
c = ‘A’;
こちらのほうが視覚的には非常に見やすいプログラムを書けそうです!
文字を保存する変数の型
通常文字はint型で扱うことはしません。なぜならもったいないから!
int : 4byte
char : 1byte
char型はcharacter(文字)を扱うために作った型なのです。
アルファベットなどの文字を扱うには1byteで扱えた、そしてchar型が誕生した・・という経緯らしいですね。