我有一个由空格分隔的数字组成的输入字符串,如"12 23 34".
输出应该是整数数组.
我尝试了以下方法:
while (sscanf(s, "%d", &d) == 1) { arr[n++] = d; }
但我发现因为我没有从文件中读取(自动调整偏移量),
所以我d
每次都会保存相同的数字.
然后我尝试了这个:
while (sscanf(s, "%d", &d) == 1) { arr[n++] = d; s = strchr(s, ' '); }
手动s
切换到新号码.
我认为应该可以正常工作.我根本不明白它失败的原因.
scanf
提供了一个优雅的答案:%n
转换,它告诉你到目前为止已消耗了多少字节.
像这样使用它:
int pos; while (sscanf(s, "%d%n", &d, &pos) == 1) { arr[n++] = d; s += pos; }