int main (int argc, char **argv)
更常见的表示为:
int main (int argc, char *argv[])
也就是说,argv
是一个指向字符数组的指针。这些字符代表什么取决于您,但通常在命令行上调用程序时,这些字符将是零分隔的字符串。
如果用户不提供位置参数,那么也许您应该使用选项。见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