我试图在argv中使用参数并在其中使用条件,例如
程序的输入将是这样的
./ program -t -d -m
我想做这样的事情 if == -t然后在变量中保存数字的值 if == -d然后在变量中保存字符串的值
我想这样做是因为程序的输入可以是这样的
./program -d <string> -m <char> -t <number>
./program -m <char> -d <string> -t <number>
我该怎么做?我试图使用getopt,但我不理解它
答案 0 :(得分:2)
如上所述,如何处理一些简短选项的问题始终是快速strcmp
或getopt
使用之间的平衡。对于一些选项,strcmp
没有任何问题。以下是使用strcmp
使用您的选项的简单示例:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (int argc, char *argv[])
{
if (argc < 7) {
fprintf (stderr, "Error, insufficient input.\n Usage: %s -d <string> -m <char> -t <int>\n", argv[0]);
return 1;
}
int it;
char *str = NULL;
char chr;
int num;
for (it = 1; it < argc; it++) {
if (strcmp ("-d", argv[it]) == 0 && it < (argc - 1))
str = strdup (argv[it+1]);
if (strcmp ("-m", argv[it]) == 0 && it < (argc - 1))
chr = *argv[it+1];
if (strcmp ("-t", argv[it]) == 0 && it < (argc - 1))
num = atoi (argv[it+1]);
}
printf ("\nOptions entered:\n\n");
printf (" str: %s\n chr: %c\n num: %d\n\n", str, chr, num);
return 0;
}
<强>编译:强>
gcc -Wall -Wextra -o bin/opts opts.c
生成强>
$ ./bin/opts -d "this is my string" -m c -t 2048
<强>输出:强>
Options entered:
str: this is my string
chr: c
num: 2048