質問: CUIのアプリケーションを作りたいです。 オプションの設定やチェックは、どのアプリケーションも共通の機能だと思うので、ライブラリを使用したいのですが見当たりません。 C言語用のオプションに関するライブラリは存在しないのでしょうか? また、参考になるオープンソースのオプション処理があったら教えてください。
回答: コマンドライン引数(オプション、スイッチ) は boost っていうライブラリの program_options というのがあります。 Cではなく、C++ですが、VC++なら普通に使えますし、 MinGW でも gcc ではなく g++ にすれば使えます。 あるいは、単純でもいいなら、 for文、while文でループしながら、チェックしていく方法。 ``` // 0 を false, 1 を true と見立てて。 int a = 0; // オプション "-a" int b = 0; // オプション "-b" int c = 0; // オプション "-c" char filename[261]; // オプション "-f" の後のファイル名 int i; for( i = 0; i < argc; i++ ){ if( strcmp( argv[i], "-a" ) == 0 ){ a = 1; }else if( strcmp( argv[i], "-b" ) == 0 ){ b = 1; }else if( strcmp( argv[i], "-f" ) == 0 ){ strcpy( filename, argv[i+1] ); // 次の配列のデータを格納 } } ``` みたいにすれば、 main.exe -f abc.jpg -a -b という感じでできます。 ただ、この "次のデータを格納する" 系は そのままだとエラーになる可能性があります。 ( 配列は 10個しかないのに 11個目にアクセスしようとしたとかで。 ) なので、 現在位置が 最後尾でないなら ... といった定義も加える必要がありますが。