開発環境
- OS: macOS High Sierra - Apple
- Text Editor: Emacs
- コンパイラー: LLVM/Clang, GCC(gcc)
- プログラミング言語: C
Head First C ―頭とからだで覚えるCの基本 (David Griffiths (著)、Dawn Griffiths (著)、中田 秀基 (監修)、木下 哲也 (翻訳)、オライリージャパン)の3章(小さなツールの作成 - 1つのことだけをうまくやる)、ピザの一切れ(p. 150)を取り組んでみる。
ピザの一切れ(p. 150)
#include <stdio.h> #include <unistd.h> #include <stdbool.h> int main(int argc, char *argv[]) { char *delivery = ""; bool thick = false; char ch; while((ch = getopt(argc, argv, "d:t")) != EOF) { switch(ch) { case 'd': delivery = optarg; break; case 't': thick = true; break; default: fprintf(stderr, "Unknown option: '%s'\n", optarg); return 1; } } argc -= optind; argv += optind; if (thick) { puts("Thick crust."); } if (delivery[0]) { printf("To be delivered %s.\n", delivery); } puts("Ingredients:"); for(int count = 0; count < argc; count++) { puts(argv[count]); } }
入出力結果(Terminal)
$ cc sample.c -o order_pizza $ ./order_pizza Ingredients: $ ./order_pizza -a ./order_pizza: illegal option -- a Unknown option: '(null)' $ echo $? 1 $ ./order_pizza -t Thick crust. Ingredients: $ ./order_pizza -d ./order_pizza: option requires an argument -- d Unknown option: '(null)' $ ./order_pizza -d a To be delivered a. Ingredients: $ ./order_pizza -dt To be delivered t. Ingredients: $ ./order_pizza -t -d a i1 i2 Thick crust. To be delivered a. Ingredients: i1 i2 $
0 コメント:
コメントを投稿