/*
getopt 练习
写一个函数,接受五个参数,
分别为:姓名、性别、年龄、身高、爱好
最后将这些信息打印出来,参数适用结构传递
*/
#include <stdio.h>
#include <unistd.h>
typedef struct info{
char *name;
char *sex;
int age;
int tall;
char *hobby;
}all_infos;
all_infos wangdan={
.name = NULL,
.sex = NULL,
.age = 0,
.tall = 0,
.hobby = NULL,
};
static int get_option(int argc,char **argv);
int main(int argc,char *argv[])
{
get_option(argc,argv);
printf("name is : %s\n",wangdan.name);
printf("sex is : %s\n",wangdan.sex);
printf("age is : %d\n",wangdan.age);
printf("tall is : %d\n",wangdan.tall);
printf("hobby is : %s\n",wangdan.hobby);
}
static int get_option(int argc,char **argv)
{
int ch = 0;
char *optstr = NULL;
opterr = 0;
optstr = "n:s:a:t:h:";
while((ch = getopt(argc,argv,optstr)) != -1){
switch(ch){
case 'n':
wangdan.name = optarg;
break;
case 's':
wangdan.sex = optarg;
break;
case 'a':
wangdan.age = atoi(optarg);
break;
case 't':
wangdan.tall = atoi(optarg);
break;
case 'h':
wangdan.hobby = optarg;
break;
default:
printf("Please check parameter!\n");
break;
}
}
return 0;
}
/*
getopt_long 练习
编写一个函数,输入参数分别为:姓名,性别,年龄,身高,爱好
最后将输入的参数分别打印出来
*/
#include <stdio.h>
#include <getopt.h>
typedef struct info{
char *name;
char *sex;
int age;
int tall;
char *hobby;
}all_infos;
all_infos wangdan={
.name=NULL,
.sex=NULL,
.age=0,
.tall=0,
.hobby=NULL,
};
static int get_option(int argc,char **argv);
int main(int argc,char **argv)
{
get_option(argc,argv);
printf("name is %s\n",wangdan.name);
printf("sex is %s\n",wangdan.sex);
printf("age is %d\n",wangdan.age);
printf("tall is %d\n",wangdan.tall);
printf("hobby is %s\n",wangdan.hobby);
}
static int get_option(int argc,char **argv)
{
int ch = 0;
int opt_index = 0;
char * optstr = "n:s:a:t:h:";
opterr = 0;
struct option long_options[]={
{"name",required_argument,NULL,'n'},
{"sex",required_argument,NULL,'s'},
{"age",required_argument,NULL,'a'},
{"tall",required_argument,NULL,'t'},
{"hobby",required_argument,NULL,'h'},
};
while((ch = getopt_long(argc,argv,optstr,long_options,&opt_index)) != -1){
switch(ch){
case 'n':
wangdan.name = optarg;
break;
case 's':
wangdan.sex = optarg;
break;
case 'a':
wangdan.age = atoi(optarg);
break;
case 't':
wangdan.tall = atoi(optarg);
break;
case 'h':
wangdan.hobby = optarg;
break;
default:
printf("parameter error!\n");
break;
}
}
return 0;
}
C语言库函数---getopt、getopt_long
最新推荐文章于 2024-03-13 22:22:39 发布