「C getopt」の版間の差分
ナビゲーションに移動
検索に移動
(ページの作成:「==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 | + | #include <unistd.h> |
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 | + | #include <unistd.h> |
| − | #include | + | #include <stdio.h> |
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 | + | for( c = 'a'; c <= '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 | + | if (opt > -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
この本からの覚書。
© 2006 矢木浩人