c - C语言中如何从char中获取int

标签 c char int

(我是法国人,抱歉我的英语不好)

我不知道如何从 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,因为模式是正确的 然后将整数放入变量 number 中。

谢谢!

最佳答案

假设'commande + 8'是一个有效的子字符串,您需要的是atoi()函数(ASCII到整数)。该函数有广泛的文档记录,您可以轻松地在网上找到其用法。

int number = atoi(commande+8);

只需记住子字符串以第一个非数字字符结尾:

  • atoi("23") 返回 23
  • atoi("51hh37") 返回 51
  • atoi("z3456") 返回 0

注意:atoi 将输入字符串转换为整数,如果您确定它符合预期输入,则可以使用它。因此,如果您希望字符串中包含长整型或浮点值,则可以使用 atol()(ASCII 到长整型)或 atof()(ASCII 到浮点型)。

关于c - C语言中如何从char中获取int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55686450/

相关文章:

c++ - 在 c++ 中编译但在 c (gcc) 中编译时很复杂

c - c中write函数的问题

c++ - 溢出检测

c - 打印不显示所有字符的大长度字符串

java - 在 Java 中将 Integer(可能为 null)转换为 int 的更好方法?

c - 使用位操作提取位

c++ - 为什么指向 char 数组的指针必须需要 strcpy 才能将字符分配给它的数组,而双引号分配不起作用?

python round 和 int 的区别

java - 分析数字

C 在ncurses中打印指定坐标的值