| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「C getopt」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
(ページの作成:「==C getopt== getopt を利用することで、option指定方法のguidelineを簡単に実現できる。 独自の値をとるoption、取らないoptionの両方…」)
 
 
(同じ利用者による、間の1版が非表示)
1行目: 1行目:
==C getopt==
+
==[[C getopt]]==
  
 
getopt を利用することで、option指定方法のguidelineを簡単に実現できる。
 
getopt を利用することで、option指定方法のguidelineを簡単に実現できる。
 
独自の値をとるoption、取らないoptionの両方をsupportする。
 
独自の値をとるoption、取らないoptionの両方をsupportする。
  #include <unistd.h>
+
  #include &lt;unistd.h&gt;
 
  int getopt(int argc, char *const argv[], const char *optstring);
 
  int getopt(int argc, char *const argv[], const char *optstring);
 
  extern char *optarg;
 
  extern char *optarg;
12行目: 12行目:
 
*optionが値をとる場合、外部変数 optargに値がセットされる
 
*optionが値をとる場合、外部変数 optargに値がセットされる
  
  #include <unistd.h>
+
  #include &lt;unistd.h&gt;
  #include <stdio.h>
+
  #include &lt;stdio.h&gt;
 
  extern char *optarg;extern int optind, opterr, optopt;
 
  extern char *optarg;extern int optind, opterr, optopt;
 
   
 
   
20行目: 20行目:
 
   int i = 1;  char c;
 
   int i = 1;  char c;
 
   char os[3] = {'\0',':','\0'};   
 
   char os[3] = {'\0',':','\0'};   
   for( c = 'a'; c <= 'z'; c++) {
+
   for( c = 'a'; c &lt;= 'z'; c++) {
 
     os[0] = c;     
 
     os[0] = c;     
 
     int opt = getopt(argc, argv, (const char*)&os);
 
     int opt = getopt(argc, argv, (const char*)&os);
     if (opt > -1) {
+
     if (opt &gt; -1) {
 
       printf("[%d]%c : %s\n", (i++), opt, optarg);
 
       printf("[%d]%c : %s\n", (i++), opt, optarg);
 
     }
 
     }

2020年2月16日 (日) 04:23時点における最新版

C getopt

getopt を利用することで、option指定方法のguidelineを簡単に実現できる。 独自の値をとるoption、取らないoptionの両方をsupportする。

#include <unistd.h>
int getopt(int argc, char *const argv[], const char *optstring);
extern char *optarg;
extern int optind, opterr, optopt;
  • optstringは、programで指定するoptionと、各optionが独自の値をとるかどうかを指定する。
  • 文字の後に : がついている場合、そのoptionが、引数をとる
  • 戻り値は、配列argvの中で見つかった、次のoption文字。
  • optionが値をとる場合、外部変数 optargに値がセットされる
#include <unistd.h>
#include <stdio.h>
extern char *optarg;extern int optind, opterr, optopt;

int main(int argc, char *argv[])
{
  int i = 1;  char c;
  char os[3] = {'\0',':','\0'};  
  for( c = 'a'; c <= 'z'; c++) {
    os[0] = c;    
    int opt = getopt(argc, argv, (const char*)&os);
    if (opt > -1) {
      printf("[%d]%c : %s\n", (i++), opt, optarg);
    }
  }
}
# ./get_opt -a optionA  -b optionB -c optionC 
[1]a : optionA
[2]b : optionB
[3]c : optionC

この本からの覚書。