C言語 char表現範囲とEOFについて






スポンサードリンク

文字型変数宣言【 char 】の表現範囲と【 EOF 】に付いて勉強してみたいと思います。

キーボードから1文字入力し、そのまま出力するサンプルです。

#include <stdio.h>

   int main(void)
{
   int ch;

   ch=getchar(ch);
   putchar(ch);

return 0;

}


解説
【 getchar(); 】は文字入力を行うものですが、その文字を入れる変数に【 char 】型を使用すると上手く動作しないことがあります。次のように覚えておくと良いようです。

【 getchar() 】関数によるデーター入力は必ず【 int 】整数型変数宣言で受け取る
上記のサンプルを下記のように書いてしまうと、動作がおかしくなってしまう場合があります。

char ch;
ch = getchar();


以上のことをふまえて、下記のサンプル図を確認してみてください。
整数型変数宣言ch
上記の実行結果です。


【 char 】の表現範囲
※変数宣言を行う場合【 int 】や【 char 】【 float 】【 double 】等、、これらは扱うデーターの性格や表現範囲(戻り値)をそれぞれ規定により決まっております。
表現範囲はCコンパイラ開発者側でそれぞれ異なります。【 char 】文字型変数宣言の場合
一般的なCコンパイラの場合: -128〜127までを扱う事が出来ます。
しかし従来のコンパイラの中には: 0〜255 まで扱う事が出来るものもあります。
【 getchar() 】関数に付いては、キーボードから入力が終了した場合、【 -1 】と言う特別な値(【 EOF 】と言う名称が付けられています。)を返すようになっています。
ところが従来の【 char 】表現範囲0〜255までのタイプだと -1 と言う値を255と判断してしまうと言う性格を持つ為、どのタイプのCコンパイラでも -1 を扱う事が出来る整数型変数宣言【 int 】にて変数を用意し、【 getchar() 】に入力された文字列を整数型の変数に代入して扱うと言うのが推奨されています。

【 EOF 】を使用したサンプル
文字入力を繰り返し処理するループ【 while 】を作成し、終了条件には【 EOF 】以外なら繰り返すにします。
キーボードから衆力終了を知らせるために「Ctrl」キー+「Z」キーにて終了【 EOF 】を知らせることが出来ます。

サンプル

#include <stdio.h>
int main(void)
{   int ch;

   ch = getchar();

   while(ch != EOF){
   putchar(ch);
   ch = getchar();
   }
return 0;


解説図
入出力の関係に付いては最初に説明しました。それに【 while(ch != EOF) 】の繰り返し条件を付け加えただけです。
【 ch=getchar(); 】が二回記述されているのは、【 whil 】にてループ開始前に【 ch 】の値が決定されていなくてはならないと言う決まりと、ループしている間にも【 ch 】は更新していなくてはならないと言う決まりがあります。
ループを終了する条件はキーボードからCTRL+Zキーで【 ch 】にEOFが代入されます。
eofで終了するソース
上記の実行結果


説明は以上です。

あかかげまるのC言語入門はこちら!!

スポンサードリンク

パソコン勉強部屋 | パソコン勉強部屋2 | ADSL勉強部屋 | メール勉強部屋 | LAN勉強部屋 | ホームページ勉強部屋 | 自宅サーバー勉強部屋 | お役立ちソフトの部屋 | C言語勉強 | 無料ゲーム | 無料セキュリティー | Linuxのコーナー | あかかげまる | オンライン通販 | ショップブランドパソコン | DVDとCD編集ツール

 Subscribe in a reader


ページトップへ