[PR] 医師 募集
日記書いたりプログラム書いたり絵描いたり。
2008/12/28 Sun 17:43 C言語メモ

メモです。
  
 
終了処理をサブルーチン化

 
 終了処理をサブルーチン化します。
 そうすることでメインのコードをすっきりさせるのが狙いです。
 
 
コード

 

#include <stdio.h>  // printf
#include <conio.h>  // getch
#include <ctype.h>  // toascii
#include <stdlib.h>  // exit

void sub_exit();

int main()
{
  printf("Hellow World.\n\n");
  printf("Escキーで終了します...");

  sub_exit();  //プログラム終了待ち
}

//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
// プログラム終了関数
// ▼指定キー押下でプログラムを終了します。
//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
void sub_exit()
{
  int key;
  int end_key;

  key = 0;
  end_key = 27;          //終了キーにEscを設定

  while( toascii(key) != end_key ) //終了キーが押されるまで
  {
    key = getch();        //1文字取得
  }
  exit(0);             //プログラムの終了
}


 

実行結果

 Cmemo002.png
 
解説

 前回 1 - Hellow World 表示プログラム の終了に関する処理をサブルーチンとしています。
 
 処理内容は一つだけ変わっています。変数で終了キーを指定しているところです。
 ルーチンの一番上で宣言しておけば、もし終了キーを別のキーで行いたいとなったとき
 コードを全て見る必要が無く、一番上の部分をちょちょいと変更してやればすぐに変更できます。
 
 で、サブルーチンとする際には変数の宣言で
 void ****();
 としてやる必要があるみたいです。
 これが値を返す関数の場合はvoid以外の、intやらcharやらで宣言するそうです。
 今回は値を返す必要が無いのでvoidです。
 
 サブルーチン(値を返さない)はvoid、ファンクション(値を返す)はint等。
 
 と覚えておくといいかもしれません。
 VBと違ってルーチン部分だけでは駄目で、
 上の方できちんと宣言してやらないと使えないというところがポイントでしょう。
 忘れず宣言しましょう。
 
 
 今回のプログラムではサブルーチンも同一のソースファイルに記述しているので
 いまいちすっきりしませんが、
 これを別のファイル(ヘッダーファイル等)に移してやって、
 そのファイルをincludeしてやればprintf等と同じように使えるかも?しれません。
 そうすればコードもすっきりするでしょう。
 
 
 以上です。
 

  
   返信は送った日から数えて一つ次の記事で。多分。


 「そ」って何?→これ
Secret