2014年1月2日木曜日

開発環境

C実践プログラミング 第3版 (Steve Oualline (著)、 望月 康司 (監訳) (翻訳)、谷口 功 (翻訳)、オライリー・ジャパン)のⅢ部(高度なプログラミング概念)の21章(あまり使用しないCの機能)、21.2(goto)、設問21-1.を解いてみる。

その他参考書籍

設問21-1.

コード

sample.c

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    char line[10];
    
    while (1){
        printf("Enter add(a), delete(d), quit(q): ");
        fgets(line, sizeof(line), stdin);
        
        switch(line[0]){
            case 'a':
                printf("Add\n");
                break;
            case 'd':
                printf("Delete\n");
                break;
            case 'q':
                printf("Quit\n");
                exit (0);
            /* 問題の例のコードではラベル名がdefaultではなくdefualtとなっているから
             * defualtはラベル名としては有効なので、エラーにならず、そして、default 
             * ではないからエラーメッセージを出力しない
             */
            default:
                printf("Error:Bad command %c\n", line[0]);
                break;
        }
    }
    return (0);
}

入出力結果(Terminal)

$ cc -g -o sample sample.c
$ ./sample
Enter add(a), delete(d), quit(q): a
Add
Enter add(a), delete(d), quit(q): d
Delete
Enter add(a), delete(d), quit(q): z
Error:Bad command z
Enter add(a), delete(d), quit(q): q
Quit
$

0 コメント:

コメントを投稿