我想知道是否有更好的方法来做到这一点;假设我们使用 fgets()
将 stdin 读取到字符串中其中字符串总共包含 n
整数(例如 5 16 2 34
代表 n = 4
),提取它们的最佳方法是什么?一定有比这个黑客更好的方法:
for (i=0, j=0; i<n; ++i, j+=pos)
sscanf(string+j, "%d%n", &array[i], &pos); // Using %n makes me feel dirty
我知道简单地使用类似 for (i=0;i<n;++i) scanf("%d", array+i);
的东西是可能的(并且看起来更容易)但我宁愿避免使用 scanf()
出于显而易见的原因。 ¹
最佳答案
您可以使用strtol
。以下代码从字符串中准确读取 n
个整数:
while (n)
{
int long v = strtol (s, &e, 10);
if (v == 0 && strlen (e) > 0)
{
++e;
if (!e)
break;
}
else
{
printf ("%d\n", v);
--n;
}
s = e;
}
这也适用于格式不正确的输入,例如“5 16 4 blah blah 32”。
关于c - 从字符串中提取不确定数量的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3819678/