📄 getopt.c
字号:
/* got this off net.sources */#include <stdio.h>#include <string.h>#include "getopt.h"/* * get option letter from argument vector */int opterr = 1, // should error messages be printed? optind = 1, // index into parent argv vector optopt; // character checked for validitychar *optarg; // argument associated with option#define EMSG ""char *progname; // may also be defined elsewherestatic voiderror(char *pch){ if (!opterr) { return; // without printing } fprintf(stderr, "%s: %s: %c\n", (NULL != progname) ? progname : "getopt", pch, optopt);}intgetopt(int argc, char **argv, char *ostr){ static char *place = EMSG; /* option letter processing */ register char *oli; /* option letter list index */ if (!*place) { // update scanning pointer if (optind >= argc || *(place = argv[optind]) != '-' || !*++place) { return EOF; } if (*place == '-') { // found "--" ++optind; return EOF; } } /* option letter okay? */ if ((optopt = (int)*place++) == (int)':' || !(oli = strchr(ostr, optopt))) { if (!*place) { ++optind; } error("illegal option"); return BADCH; } if (*++oli != ':') { /* don't need argument */ optarg = NULL; if (!*place) ++optind; } else { /* need an argument */ if (*place) { optarg = place; /* no white space */ } else if (argc <= ++optind) { /* no arg */ place = EMSG; error("option requires an argument"); return BADCH; } else { optarg = argv[optind]; /* white space */ } place = EMSG; ++optind; } return optopt; // return option letter}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -