開発環境
- 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 コメント:
コメントを投稿