C 从字符串中提取数量不确定的整数
我想知道是否有更好的方法;假设我们使用C 从字符串中提取数量不确定的整数,c,string,substring,scanf,C,String,Substring,Scanf,我想知道是否有更好的方法;假设我们使用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 对于(i=0,j=0;i我想说你最好使用一个库来做这件事
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
对于(i=0,j=0;i我想说你最好使用一个库来做这件事,因为数量未知你可以使用strtok和strtol首先使用标记化字符串,然后使用sscanf怎么样?你可以使用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;
}
这也适用于格式错误的输入,如“5164诸如此类”。您的解决方案可能不是地球上最漂亮的东西,但是,嘿,它是有效的。只需适当地评论它,然后继续做其他事情。您应该添加用法示例和文档链接。谢谢。只是好奇,为什么现在有反馈?我两年前写了这个!