C言語 switch 分岐処理 スクリプトの書き方

バイオインフォ道場、くまぞうです。

switch文は、条件に「一致したかどうか」という判断に基づいて、実行するコマンドを変更したりするときに使います。if文と異なり、複数の条件と対応した処理をまとめて記述できるので便利です。if文を使って同じことができますが、よりシンプルに記述できて、プログラムの見通しも良くなります。

スポンサーリンク



switch文による条件判断

swtch文の書き方

switch文では、式に対する複数の条件(定数)を判断することができます。上から順に判定されます。条件を増やしたい時は「case」を追加します。続けて、条件に合致した場合の処理を書きます。このとき、「break」を指定されたところまでが実行範囲です。もし「break」を書き忘れると、続く「case」の処理まで実行されてしまいます。「その他の条件」は、「default」で指定することができます。

switch文の一般的な形式

switch (式) {
  case 定数1:
    対応した文
    ...
    break;

  case 定数2:
    対応した文
    ...
    break;

  default:
    対応した文
    ...
}

switch文の判断

switch文で与えられた式を評価し、caseラベルの1つに処理を分岐させます。ラベルには、整数・文字型・列挙型を指定します。

プログラム

test_switch.c
#include<stdio.h>

void main(void) {
 
  printf("input A? B?:");
  int k;
  k = getchar();
  
  switch (k) {
  case 'A':
    printf("catch A\n");
    break;
  case 'B':
    printf("catch B\n");
    break;
  default:
    printf("error\n");
  } 
}
test_switch2.c
#include<stdio.h>

void main(void) {
 
  printf("input A? B?:");
  int k;
  k = getchar();

  switch (k) {
  case 'A':
    printf("hello\n");
  case 'B':
    printf("catch %c\n", k);
    break;
  default:
    printf("error\n");
  } 
}

プログラム実行

test_switch
$ gcc test_switch.c -o test_switch
$ chmod +x test_switch
$ ./test_switch
input A? B?:A <-Aを入力
catch A
test_switch2
$ gcc test_switch2.c -o test_switch2
$ chmod +x test_switch2
$ ./test_switch2
input A? B?:A <-Aを入力
hello
catch A
$ ./test_switch2
input A? B?:B <-Bを入力
catch B

プログラムについて

test_switch.cでは、switchの条件を数種類ためしてみました。標準入力用getcharを使って、キーボードから入力された1文字を判断します。「変数k」が「A」または「B」のとき、それぞれの処理として記述された「catch A」「catch B」を出力します。test_switch2.cは、処理は大体同じです。変更点は、case内の処理がほぼ同じなので、「break」を省いて「catch」の表示処理を共通にしたところです。また、「A」が入力されたときだけ「hello」を表示させています。分岐と共通を使い分けました。

条件分岐処理には「if」もありますが、複数の分岐条件が想定されている場合は「switch」を使ったほうが、シンプルに記述することができると思います。

スポンサーリンク





ピックアップ記事

  1. awk if サンプルでわかる条件文の書き方 一致・大小比較・正規表現を簡潔に書く方法

    awkのif条件文は、条件によって処理をわけたいときに使います。条件式では、0の判定・関係演算子・…
  2. tidyverse – distinct関数でデータフレームの重複行を削除 dplyrパッケージ

    tidyverseでデータフレームの重複行の削除を行う場合、dplyrパッケージのdistinct…
  3. R plot 重ねる方法3パターン サンプルでわかるRの使い方

    Rでグラフ (plot) を重ねる方法は、「単純な追加」「図に重ねて描画」「濃淡で重なり表現」の3…

人気記事

  1. Excel, その他, 統計

    z-score 計算方法 エクセル(Excel) 編
    統計処理で、大きく変化しているなどの判断基準にも使われる値…
  2. R データ型 - 文字列・ベクター・データフレーム・マトリックス など-, R言語, スクリプト

    R subset関数 データフレームやmatrixからの条件指定による行・列の抽出
    R の subset関数は、データフレームやマトリックスか…
  3. IGV, 解析ツール

    IGV 使い方 インストール〜便利な使い方まで | リファレンス・マッピングデータ・アノテーションを読み込んで表示しよう
    IGV(Integrative Genomics View…

おすすめ記事

  1. awk, bash 文字列操作, シェルスクリプト

    bash 部分文字列・置換・長さ・連結・分割の文字列処理
    bashのよく使う文字列処理、部分文字列・置換・連結・長さ…
  2. R言語, グラフ

    R 使い方 軸・ラベルの調整(向き・サイズ・色など) グラフの描き方
    Rによるplot(グラフ)の描画は、手軽で大変便利です。た…
  3. bash 応用, シェルスクリプト

    シェル スクリプト ファイル存在チェック・空のファイルチェック
    bashでスクリプトを作成するときに、よく使うのがファイル…