これは、コマンドラインスイッチ処理の私の標準的な方法です+受け入れるように適応して - 数字:あなただけの、メインとして
int main(int argc, char **argv)
{
int i= 0;
char filename[256];
int number;
int xOption= 0;
/* format: prog -dfilename -xrs -n3 +5 -3
* Switch chars are case insensitive and can be in any order
*/
LabelNextSwitch:
while (++i < argc) {
switch (argv[i][0]) {
case '-':
while (*++argv[i]) {
switch (toupper(*argv[i])) {
case 'D':
strncpy (filename, argv[i]+1, 256);
filename[255]= '\0';
goto LabelNextSwitch;
case 'N':
++argv[i]; number = 0;
while (isdigit(*argv[i]))
number = number *10 + *argv[i]++ - '0';
goto LabelNextSwitch;
case 'X':
xOption= 1;
break;
case 'R':
// whatever
break;
case 'S':
// whatever
break;
default:
if (isdigit(*++argv[i])) {
number = 0;
while (isdigit(*argv[i]))
number = number *10 + *argv[i]++ - '0';
number = -number;
goto LabelNextSwitch;
}
else
printf("Bad argument '%c', ignored.\n",*argv[i]);
} /* end switch (*argv[i]) */
} /* end while (*++argv[i]) */
break;
case '+':
if (isdigit(*++argv[i])) {
number = 0;
while (isdigit(*argv[i]))
number = number *10 + *argv[i]++ - '0';
goto LabelNextSwitch;
}
else
printf("Bad argument +%s, ignored.\n",argv[i]);
break;
default:
printf("Bad argument %s, ignored.\n",argv[i]);
} /* switch (argv[i][0]) */
} /* end while (++i < argc) */
return 0;
} /* end function */
が '(文字** argvの、int型のargc)int型メイン'として宣言されていますそれぞれの 'argv [i]'の値が –
であることを確認してください。getoptsのような標準的な解決策を使うのが良いでしょう。 –
クラス? c?あなたはそれがcだと確信していますか? –