開発環境
- OS: Windows 10 Pro
- IDE(統合開発環境): Visual Studio 2017
- プログラミング言語: C(Visual C)
Head First C ―頭とからだで覚えるCの基本 (David Griffiths (著)、Dawn Griffiths (著)、中田 秀基 (監修)、木下 哲也 (翻訳)、オライリージャパン)の3章(小さなツールの作成 - 1つのことだけをうまくやる)、ピザの一切れ(p. 150)を取り組んでみる。
ピザの一切れ(p. 150)
Visual C(Visual Studio)にはunistd.hヘッダーファイルは標準では含まれていないみたいなので、getopt関数等も無い。ということで探してみたら、Getopt-for-Visual-Studioというのを github で見つけたので利用させてもらうことに。
コード
#include <stdlib.h> #include "getopt.h" int main(int argc, char *argv[]) { char *delivery = ""; int thick = 0; int count = 0; char ch; while ((ch = getopt(argc, argv, "d:t")) != EOF) { switch (ch) { case 'd': delivery = optarg; break; case 't': thick = 1; 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 (count = 0; count < argc; count++) puts(argv[count]); return 0; }
入出力結果(コマンドプロンプト)
C:>order_pizza.exe Ingredients: C:>order_pizza.exe ingredient1 Ingredients: ingredient1 C:>order_pizza.exe -a ingredient1 order_pizza.exe: unknown option -- a Unknown option: '(null)' C:>echo %ERRORLEVEL% 1 C:>order_pizza.exe -d order_pizza.exe: option requires an argument -- d Unknown option: '(null)' C:>order_pizza.exe -d Shinjuku To be delivered Shinjuku. Ingredients: C:>order_pizza.exe -d Shinjuku -t Thick crust. To be delivered Shinjuku. Ingredients: C:>order_pizza.exe -t -d Shinjuku Thick crust. To be delivered Shinjuku. Ingredients: C:>order_pizza.exe -dt Shinjuku To be delivered t. Ingredients: Shinjuku C:>order_pizza.exe -td Shinjuku Thick crust. To be delivered Shinjuku. Ingredients: C:>order_pizza.exe -td Shinjuku ingredient1 ingredient2 Thick crust. To be delivered Shinjuku. Ingredients: ingredient1 ingredient2 C:>order_pizza.exe -d order_pizza.exe: option requires an argument -- d Unknown option: '(null)' C:>echo %ERRORLEVEL% 1 C:>
0 コメント:
コメントを投稿