2018年2月1日木曜日

開発環境

Head First C ―頭とからだで覚えるCの基本 (David Griffiths (著)、Dawn Griffiths (著)、中田 秀基 (監修)、木下 哲也 (翻訳)、オライリージャパン)の3章(小さなツールの作成 - 1つのことだけをうまくやる)、ピザの一切れ(p. 150)を取り組んでみる。

ピザの一切れ(p. 150)

//
//  main.c
//  sample1
//
//  Created by kamimura on 2018/01/27.
//  Copyright © 2018 kamimura. All rights reserved.
//

#include <stdio.h>
#include <unistd.h>
#include <stdbool.h>

int main(int argc, const char * argv[]) {
    char *delivery = "";
    bool thick = 0;
    char ch;
    for (; (ch = getopt(argc, (char **)argv, "d:t")) != EOF; ) {
        switch (ch) {
            case 'd':
                delivery = optarg;
                break;
            case 't':
                thick = true;
                break;
            default:
                fprintf(stderr, "Unknown option: '%s'\n", optarg);
                break;
        }
    }
    argc -= optind;
    argv += optind;
    
    if (thick) {
        puts("Thick crust.");
    }
    if (delivery[0]) {
        printf("To be delivered %s.\n", delivery);
    }
    
    for (int count = 0; count < argc; count++) {
        puts(argv[count]);
    }
    return 0;
}

入出力結果(Terminal)

$ ./pizza 
$ ./pizza p1
p1
$ ./pizza p1 p2
p1
p2
$ ./pizza -t p1 p2
Thick crust.
p1
p2
$ ./pizza -td Home p1 p2
Thick crust.
To be delivered Home.
p1
p2
$ ./pizza -d 
./pizza: option requires an argument -- d
Unknown option: '(null)'
$ ./pizza -d Office -t p1 p2
Thick crust.
To be delivered Office.
p1
p2
$ 

0 コメント:

コメントを投稿