(我是法国人,对不起我的英语不好)

我不知道如何从char []获取一个int,每次的char模式都相同:“ prendre 2”,“ prendre 44”,“ prendre 710” ...

我想检查句子的模式是否正确并获取整数。

我已经尝试执行此操作,但是如您所见,问题是我只能检查整数是否在0-9之间,因为我只检查一个字符。

[...]

else if (est_prendre(commande)){
    /* if  the output is 1*/
    int number = commande[8]- '0'
}


int est_prendre(char *commande){
    int i;
    char temp[9] = "";
    char c = commande[8];
    int num = c - '0';
    for (i=0; i<8; i++){
        temp[i] = commande[i];
    }
    if (strcmp ("prendre ", temp) == 0)
    {
        if ( /*  num IS INTEGER?  */)
        {
            return 1;
        }
        else
        {
            return 0;
        }
    } else {
        return 0;
    }

}


我希望如果commande =“ prendre 3”,则est_prendre的输出为1,因为模式正确
然后将整数放入变量号中。

谢谢!

最佳答案

这是非常基础的,您应该(重新)阅读用于学习该语言的任何有关C的参考/教程。

您应该只使用sscanf()标准函数:

int value;
if (sscanf(commande, "prendre %d", &value) == 1)
{
  ... it was a match, the variable 'value' will be set to the number from the string
}


您可以删除将字符从commande复制到temp的(看起来很奇怪)代码,当然也可以删除temp变量。只需直接检查commande字符串。

10-04 21:55