C 如何接受字符或字符串作为输入
在阅读了一篇关于argp的著名pdf之后,我想用它做点什么,但我遇到了一个问题,在本例中:C 如何接受字符或字符串作为输入,c,argp,C,Argp,在阅读了一篇关于argp的著名pdf之后,我想用它做点什么,但我遇到了一个问题,在本例中: static int parse_opt (int key, char *arg, struct argp_state *state) { switch (key) { case 'd': { unsigned int i; for (i = 0; i < atoi (arg); i++)
static int parse_opt (int key, char *arg, struct argp_state *state)
{
switch (key)
{
case 'd':
{
unsigned int i;
for (i = 0; i < atoi (arg); i++)
printf (".");
printf ("\n");
break;
}
}
return 0;
}
int main (int argc, char **argv)
{
struct argp_option options[] =
{
{ "dot", 'd', "NUM", 0, "Show some dots on the screen"},
{ 0 }
};
struct argp argp = { options, parse_opt, 0, 0 };
return argp_parse (&argp, argc, argv, 0, 0, 0);
}
提前谢谢。
#包括
#包括
#包括
静态int parse_opt(int key,char*arg,struct argp_state*state){
(void)state;//我们不使用state
开关(钥匙){
案例“c”:{
如果(strlen(arg)==1){//我们只需要一个字符
char c=*arg;//或arg[0]
printf(“我的超级字符%c!!!\n”,c);
}否则{
返回1;
}
}
}
返回0;
}
int main(int argc,字符**argv){
结构argp_选项const options[]={
{char',c',c',0,“超级字符”,0},{0};
struct argp const argp={options,&parse_opt,NULL,NULL,NULL,NULL};
argp_解析(&argp,argc,argv,0,NULL,NULL);
}
注意澄清d接受int类型的参数,
?“-d接受int类型的参数”。那不是真的arg
始终是一个字符串。是您的代码将其更改为int
。如果你想把它存储为一个字符串,那么就不要调用atoi
@sjsam当然,有一个叫做i的无符号整数,它与-d的参数“NUM”有关,“NUM”参数justs接受整数,我希望它接受字符或字符数组,我希望我是clear@kaylum上面的代码不是我的实际项目,我是从pdf中得到的,在我的代码中,我试图将arg与char进行比较,但它不起作用,因为它说它需要const char,但参数的类型是int,如果我是一个彻头彻尾的noob,请耐心听我说。好吧,然后显示您尝试过但不起作用的代码。如果我们看不到代码,就不能指出错误。我有点明白了,但是你能解释一下结构argp中的部分吗?当它说NULL时,文档中的示例没有显示类似的内容,或者至少在我看到的示例中没有显示类似的内容。这只是为了避免警告,因为struct argp
有很多字段。要知道什么是NULL
read
static int parse_opt(int key, char *arg, struct argp_state *state)
{
switch(key)
{
case 'e':
{
//Here I want to check if "TOPIC" has something, in this case, a char array
//then based on that, do something.
if (0 == strcmp(arg, 'e'))
{
printf("Worked");
}
}
}
return 0;
}//End of parse_opt
int main(int argc, char **argv)
{
struct argp_option options[] =
{
{"example", 'e', "TOPIC", 0, "Shows examples about a mathematical topic"},
{0}
};
struct argp argp = {options, parse_opt};
return argp_parse (&argp, argc, argv, 0, 0, 0);
}//End of main
#include <stdio.h>
#include <argp.h>
#include <string.h>
static int parse_opt(int key, char *arg, struct argp_state *state) {
(void)state; // We don't use state
switch (key) {
case 'c': {
if (strlen(arg) == 1) { // we only want one char
char c = *arg; // or arg[0]
printf("my super char %c !!!\n", c);
} else {
return 1;
}
}
}
return 0;
}
int main(int argc, char **argv) {
struct argp_option const options[] = {
{"char", 'c', "c", 0, "a super char", 0}, {0}};
struct argp const argp = {options, &parse_opt, NULL, NULL, NULL, NULL, NULL};
argp_parse(&argp, argc, argv, 0, NULL, NULL);
}