解析argv变量doesen'时在C中使用strep;行不通

解析argv变量doesen'时在C中使用strep;行不通,c,string,parsing,strtok,strsep,C,String,Parsing,Strtok,Strsep,在解析argv变量时,我在C中遇到了一个问题。这就是任务: 我从命令行中获得了一些参数,并将其输入到我的C程序中。其中一个看起来像“-r=20-5”。在那里我必须找到“r”。这适用于: if (argv[i][0] != 0 && argv[i][1] != 0 && argv[i][2] != 0 && argv[i][0] == '-' && argv[i][2] == '=') { /* Check the Varia

在解析argv变量时,我在C中遇到了一个问题。这就是任务:

我从命令行中获得了一些参数,并将其输入到我的C程序中。其中一个看起来像“-r=20-5”。在那里我必须找到“r”。这适用于:

if (argv[i][0] != 0 && argv[i][1] != 0 && argv[i][2] != 0 &&
    argv[i][0] == '-' && argv[i][2] == '=') { /* Check the Variables */
    switch (argv[i][1]) {
        case 'r':
            /* what have to be here? */
            break;
}
现在我有了“r”。但是我也需要20和5在两个不同的变量中。这就是我所想的,但它不起作用。我试了些东西

strsep(argv[i]+3, "-");
但是我的编译器(Xcode)抛出了一个警告(警告:从不兼容的指针类型传递'strep'的参数1)

有人知道我如何解决这个问题吗


解决后仍然有一个警告,所以我被回复发布我的全部新代码:


int-parse(int-argc,const-char*argv[]){
int i,x,y;
int intTmp;
长龙;
字符*strTmp;
字符*结束;
对于(i=1;istrTmp=argv[i]+3;/*下面是如何将字符串传递给
strep()

将产生:

x=3, y=4

不要按原样使用。您必须针对您的情况对
x
y
进行额外的
NULL
检查。

您知道sscanf吗?请查看:

  unsigned a,b;
  if( 2==sscanf(argv[i],"-r=%u-%u",&a,&b) )
    printf("%u-%u",a,b);

strep
char**
作为其第一个参数,而不是
char*
,或者您可以编写自己的解析器。这将需要一些时间,但它将按照您的意愿工作。您只需在字符串上迭代。作为分隔符,您可以使用“-”符号。@Paul R如何从char*中获取char**?(我很快用谷歌搜索了一下,但没有好的结果)酷。这是可行的,但我还是得到了警告。为什么?(警告不好)这一个比另一个简单得多。不过,另一个也可行。
x=3, y=4
  unsigned a,b;
  if( 2==sscanf(argv[i],"-r=%u-%u",&a,&b) )
    printf("%u-%u",a,b);