[英]How to get int from char in C
(我是法国人,对不起我的英语不好)
我不知道如何从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
字符串即可。
假设“ commande + 8”是有效的子字符串,那么您需要的是atoi()函数(ASCII到Integer)。 此功能已被广泛记录,您可以在网上轻松找到其用法。
int number = atoi(commande+8);
请记住,子字符串在第一个非数字字符处终止:
注意:atoi将输入字符串转换为整数,如果确定它适合预期的输入,则可以使用它。 因此,如果您希望字符串中包含长整数或浮点值,则可以使用atol()(ASCII转换为long)或atof()(ASCII转换为浮点)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.