スポンサーサイト

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

getopt関数について

linuxのC、C++でオプションを付けて実行するプログラムを書きたい時はgetopt関数が便利なようです。

使い方と簡単な解説は続きより↓

まず、getopt関数を使用するのに必要なヘッダーは unistd.h です。

getopt関数の第1、第2引数は、main文で受け取った引数を渡します。

第3引数はどのアルファベットをオプションに使うかを設定します。
書き方は"ab"といった感じで行います。この場合aとbをオプションとして認識します。
アルファベットの後ろに':'を付けると値を取るオプションになります。
"ab:cd:"とした場合には、aとcは値を取らないオプション、bとdは値を取るオプションとして認識されます。

例)

/*'<'後のスペースを消して下さい*/
#include < stdio.h>
#include < unistd.h>

int main(int argc, char* argv[])
{
int opt;

while ((opt = getopt(argc, argv, "ab:cd:")) != -1)
{
switch (opt)
{
case 'a':
printf("option is a\n");
break;
case 'b':
printf("option is b\n");
break;
default:
printf("option is not a or b\n");
break;
}
}
}


プログラムを実行する時は、
$ ./test -a -b 10
とすれば良いです。

上記例の場合、
option is a
option is b
と表示されます。



<getoptの値について>
前項で値を取るオプションにした場合、その値はoptargで参照できます。
optargはchar*なので、数字を使う際は、atoi(optarg)、atof(optarg)等とすれば良いでしょう。

例)

/*'<'後のスペースを消して下さい*/
#include < stdio.h>
#include < unistd.h>

int main(int argc, char* argv[])
{
int opt;

while ((opt = getopt(argc, argv, "ab:cd:")) != -1)
{
switch (opt)
{
case 'a':
printf("option is a\n");
break;
case 'b':
printf("option is b and value is %s\n", optarg);
break;
default:
printf("option is not a or b\n");
break;
}
}
}


使う際は
$ ./test -b miku
とすれば、optargに"miku"という文字列が入ります。

上記例の場合出力は、
option is b and value is miku
となります。

参考サイト様
・http://www.fireproject.jp/feature/c-language/basic-library/getargs.html
関連記事

theme : プログラミング
genre : コンピュータ

comment

Secret

プロフィール

シロマ=ナノ

Author:シロマ=ナノ
参加予定イベント:
 ・C91 3日目西め28a

DIVA-AC:
 LV.199 白のシンフォニア

Flashカレンダー
Twitter
カテゴリ
最新記事
PCLクレジット
当ブログは、ピアプロ・キャラクター・ライセンス(http://piapro.jp/license/pcl)に基づいて、クリプトン・フューチャー・メディア株式会社のキャラクター 「初音ミク」「鏡音リン」「鏡音レン」「巡音ルカ」「Meiko」「Kaito」及びそれらに依拠して制作されたキャラクター「亞北ネル」「弱音ハク」を描いた作品を公開しています。
アクセスカウンター
検索フォーム
主な作品
WindowHelper(フリーソフト)
WindowHelperポップ

描いた絵・イラスト
リンク
バナー
当サイトはリンクフリーです。
バナーを使用したい場合は以下の画像をお使い下さい。
(リンク先に200x40サイズを置いてあります)

・通常版
banner

・ミク版
banner
RSSリンクの表示
ブロとも申請フォーム

この人とブロともになる

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