int main (int argc, char **argv)
より一般的には次のように表現されます。
int main (int argc, char *argv[])
つまりargv
、char の配列へのポインターです。これらの文字が何を表すかはあなた次第ですが、通常、コマンドラインでプログラムが呼び出されると、これらはゼロで区切られた文字列になります。
ユーザーが位置パラメータを指定しない場合は、オプションを使用する必要があります。を参照してくださいgetopt()
。
例えば:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
/* Options:
-i : integer argument
-p : ip address
*/
int main (int argc, char *argv[])
{
int option;
int integer = 0;
char *ip_address = NULL;
opterr = 0;
while ( (option=getopt(argc, argv, "i:p:")) != EOF ) {
switch ( option ) {
case 'i': integer = atoi(optarg);
break;
case 'p': ip_address = optarg;
break;
case '?': fprintf(stderr,"Unknown option %c\n", optopt);
exit(1);
break;
}
}
if (integer) printf("INTEGER: %d\n", integer);
if (ip_address) printf("IPADDRESS: %s\n", ip_address);
return 0;
}
サンプルラン:
./a.out -i 1234 -p 128.0.0.1
INTEGER: 1234
IPADDRESS: 128.0.0.1
./a.out -i 1234
INTEGER: 1234
./a.out -p 128.0.0.1
IPADDRESS: 128.0.0.1
./a.out -p 128.0.0.1 -i 1234
INTEGER: 1234
IPADDRESS: 128.0.0.1
./a.out -x stuff
Unknown option x