C 从字符串中获取整数

C 从字符串中获取整数,c,arrays,casting,C,Arrays,Casting,从字符串中获取整数并使用它,我遇到了麻烦。我有: char *string = "I 17 24 flying bits"; 我想把17和24作为整数并使用它们。指针转换是不可能的,我如何获得这些整数并使用它们?您可以使用标准库函数。包含标题。您可以使用标准库函数。包含标题。您可以将strtok与atoi()和isdigit()一起使用。 int a, b; int count = sscanf(array, "%*s %d %d", &a, &b); if (count ==

从字符串中获取整数并使用它,我遇到了麻烦。我有:

char *string = "I 17 24 flying bits";

我想把17和24作为整数并使用它们。指针转换是不可能的,我如何获得这些整数并使用它们?

您可以使用标准库函数。包含
标题。

您可以使用标准库函数。包含
标题。

您可以将strtok与atoi()和isdigit()一起使用。
int a, b;
int count = sscanf(array, "%*s %d %d", &a, &b);
if (count == 3) // then you matched three tokens, proceed, else failed to match

你可以参考这篇文章来了解情况。可以使用与其中一个答案相同的逻辑。

您可以将strtok与atoi()和isdigit()一起使用。
你可以参考这篇文章来了解情况。可以使用与其中一个答案相同的逻辑。

尝试函数atoi&strotkread about and。
strtol
函数允许您验证字符串是否为数字,这是
atoi
无法做到的。@michaeltang:我不会向新程序员推荐atoi();在存在未验证输入的情况下,正确使用它是非常困难的。strtol()似乎更难使用,但实际上更容易正确使用。请尝试函数atoi&strtokRead about and。
strtol
函数允许您验证字符串是否为数字,这是
atoi
无法做到的。@michaeltang:我不会向新程序员推荐atoi();在存在未验证输入的情况下,正确使用它是非常困难的。strtol()似乎更难使用,但事实上更容易正确使用。如果我不知道字符串中的整数数怎么办?@RikayanBandyopadhyay:使用
strtok()/strtol()
方法。@RikayanBandyopadhyay:你不知道,或者整数数有上限吗?如果说最大值是5或6或其他值,只需在scanf中添加更多标记即可。如果数字可能非常多,那么可以使用strtok_r()(而不是线程不安全的strtok()和strtol()。如果我不知道字符串中的整数数量,该怎么办?@RikayanBandyopadhyay:使用
strtok()/strtol()
方法。@RikayanBandyopadhyay:你不知道,或者整数的数量有上限吗?如果说最大值是5或6或其他值,只需在scanf中添加更多标记即可。如果数字可能很多,那么可以使用strtok_r()(不是线程不安全的strtok())和strtol()。
atoi()
只有在要读取的数字不包括
0
时才安全可用,因为
0
用于检测转换错误。@alk ya然后使用isdigit()| atoi()可以帮助。
atoi
只有在要读取的数字不包括
0
时才安全可用,因为
0
用于检测转换错误。@alk ya然后使用isdigit()| atoi()可能会有所帮助。