CUIのアプリケーションを作りたいです。
オプションの設定やチェックは、どのアプリケーションも共通の機能だと思うので、ライブラリを使用したいのですが見当たりません。
C言語用のオプションに関するライブラリは存在しないのでしょうか?
また、参考になるオープンソースのオプション処理があったら教えてください。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
コマンドライン引数(オプション、スイッチ) は boost っていうライブラリの program_options というのがあります。
Cではなく、C++ですが、VC++なら普通に使えますし、
MinGW でも gcc ではなく g++ にすれば使えます。
あるいは、単純でもいいなら、
for文、while文でループしながら、チェックしていく方法。
C/C++
1// 0 を false, 1 を true と見立てて。 2int a = 0; // オプション "-a" 3int b = 0; // オプション "-b" 4int c = 0; // オプション "-c" 5char filename[261]; // オプション "-f" の後のファイル名 6int i; 7 8for( i = 0; i < argc; i++ ){ 9 if( strcmp( argv[i], "-a" ) == 0 ){ 10 a = 1; 11 }else if( strcmp( argv[i], "-b" ) == 0 ){ 12 b = 1; 13 }else if( strcmp( argv[i], "-f" ) == 0 ){ 14 strcpy( filename, argv[i+1] ); // 次の配列のデータを格納 15 } 16} 17
みたいにすれば、
main.exe -f abc.jpg -a -b
という感じでできます。
ただ、この "次のデータを格納する" 系は そのままだとエラーになる可能性があります。
( 配列は 10個しかないのに 11個目にアクセスしようとしたとかで。 )
なので、
現在位置が 最後尾でないなら ... といった定義も加える必要がありますが。
投稿2016/06/11 05:34
総合スコア4958
0
標準的なものであれば getopt があります。
参考
https://linuxjm.osdn.jp/html/LDP_man-pages/man3/getopt.3.html
投稿2016/06/11 02:50
総合スコア674
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
C言語ならばメイン関数の引数としてオプション(コマンドライン引数)を受け取れますよ。
int main(int argc, char* argv[])
argc:オプションの数
argv[i]:i版目のオプション
ちなみにargv[0]には実行ファイル名が入ります。
投稿2016/06/11 06:02
総合スコア4830
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/11 23:05