我尝试使用atoi,但我只能以这种方式达到500。不知道从哪里开始。
答案 0 :(得分:4)
您可以使用strtol
“标记”一系列以空格分隔的整数:
int a, b;
char src[] = "500 600";
char *tmp = src;
// The first call to strtol parses 500
a = strtol(tmp, &tmp, 10);
// The call looks the same, but tmp now points at the space between 500 and 600
// The next call to strtol skips the space, and parses 600
b = strtol(tmp, &tmp, 10);
显然,这段代码是骨架式的,并且会跳过相关的检查。有关strtol
如何处理各种意外情况的准确信息,请参阅文档。
答案 1 :(得分:1)
答案 2 :(得分:0)
使用sscanf
会很简单。
使用sscanf
的示例如下:
char str[] = "500 600";
int a, b;
if(sscanf(str, "%d%d", &a, &b)==2) {
// OK
} else {
// failed to parse
}
如果您不需要测试sscanf
是否失败,请写如下:
sscanf(str, "%d%d", &a, &b);
答案 3 :(得分:0)
char &s = "500 600";
int x, y;
if (2 == sscanf(s, "%d %d", &x, &y))
{
/* Everything is ok */
}
else
{
/* Have another go! */
}
应该做的伎俩