C程序起点main函数
main
c
语言中main
函数接收两个参数int argc
, char* argv[]
int main(int argc, char* argv[]);
int main(int argc, char** argv);
如上,argc
代表参数的数量,argv
但是参数字符串指针数组
./program -i 192.168.0.1 -p 2000
此时共有五个参数,
argv[0] --> ./program
argv[1] --> -i
argv[2] --> 192.168.0.1
argv[3] --> -p
argv[4] --> 2000
那么我们怎么去接收这些参数并去识别,那么就要用到getopt.h
的getopt()
函数了。
int getopt(int argc, char** argv, char* optstring);
第一个参数、第二个参数对应即可,第三个参数接收的是选项如"i:p:"
,i
、p
代表选项,:
代表其后接收一个参数。每个选项例如"-i"
这个函数会直接过滤掉-
,每次获取时会自动将:
后的参数传入到optarg
,下次获取会直接跳到下一个选项。此函数的返回值为选项'i'
的ASCII
码值。
实例
int main(int argc, int char){
// 判断参数
if(argc < 5) return -1;
int ret = 0;
char* ip =NULL;
int port = 0;
// i,p表示两个命令,:表示需要一个参数
while ((ret = getopt(argc, argv, "i:p:")) != EOF){
// printf("char is %c\n", ret);
switch (ret)
{
case 'i':
// printf("optarg: %s\n", optarg);
ip = optarg;
break;
case 'p':
// printf("optarg: %s\n", optarg);
port = atoi(optarg);
break;
default:
break;
}
}
printf("ip: %s, port: %d\n", ip, port);
return 0;
}
注意
如果有长命令的输入需求的话,可以使用getopt_long
函数
int getopt(int argc, char * const argv[], const char *optstring);
标签:argc,函数,int,argv,char,参数,main,起点
From: https://www.cnblogs.com/solicit/p/18333555