(我是法国人,抱歉我的英语不好)
我不知道如何从 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/