1. Top » 
  2. スポンサー広告 » 
  3. 【C】コマンドラインオプションの解析をしたい
  4. プログラミング全般 » 
  5. C言語 » 
  6. 【C】コマンドラインオプションの解析をしたい

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  • Genre:

【C】コマンドラインオプションの解析をしたい

コマンドラインオプションとはコマンドの後ろについているやつのこと。
これを使うと、コマンドに「~して」とか「~しないで」とか指示できる。
結構メジャーなところでいうとdirもしくはlsのコマンドがある。

ls 通常表示
ls -l リスト表示
ls -a 全部表示
ls -al 全部リスト表示



などなど。
これをC言語で解析する。
ただしこの関数だと1文字のバージョンのみ。

コンパイラオプションには-lなど1文字で指定するものと--helpなどのように文字列で指定するモノがある。
getopt関数ではとりあえず1文字指定のもののみ使える。

#include <stdio.h>
#include <unistd.h>

int main(int argc, char** argv){
int opt;
while((opt = getopt(argc, argv, "abc")) != -1){
switch(opt){
case 'a':
printf("option a\n");
break;
case 'b':
printf("option b\n");
break;
case 'c':
printf("option c\n");
break;
case '?':
printf("fault\n");
break;
}
}

printf("main program output\n");
}


これは次のような実行結果になる。

d:\taki\program\clinux>optest.exe -a -b -c
option a
option b
option c
main program output

d:\taki\program\clinux>optest.exe -a -b -c -d
option a
option b
option c
optest: unknown option -- d
fault
main program output

d:\taki\program\clinux>optest.exe -abc
option a
option b
option c
main program output



コンパイラオプション(1文字)はくっつけても話してもバラバラに出来る。
この関数のキーポイントは真ん中にあるwhile文のところ。

 while((opt = getopt(argc, argv, "abc")) != -1){
switch(opt){
----


ここで、オプションとしてa,b,cの3つを見つけてくれる。
それ以外の場合はswitch文の?に該当する。

ところでオプションが引数を持つ場合があるのだけれどもその場合はどうするのか。
それはまた次回?


category of C:
【C】コマンドライン引数の取り方
関連記事
スポンサーサイト

Comment

コメントフォーム
このエントリへコメントを書く
(任意)
(任意)
(任意)
(必須) HTMLタグは使用できません
(任意) ID生成と編集に使用します
(任意) 非公開コメントにする

Page Top

Trackback

Trackback URI
http://parabola0.blog86.fc2.com/tb.php/504-be46a711 この記事にトラックバックする(FC2ブログユーザーのみ)

Page Top

訪問者

お引っこし。 http://parabola.sblog.jp/

プロフィール

parabola0

Author:parabola0
Twitter用ですが…。
プロフィール

最新記事
最新コメント
最新トラックバック
カテゴリ
月別アーカイブ
検索フォーム
リンク

このブログをリンクに追加する

QRコード
QRコード
RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。