当前位置:  开发笔记 > 编程语言 > 正文

迭代地使用sscanf解析字符串输入

如何解决《迭代地使用sscanf解析字符串输入》经验,为你挑选了1个好方法。

我有一个由空格分隔的数字组成的输入字符串,如"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切换到新号码.
我认为应该可以正常工作.我根本不明白它失败的原因.



1> 小智..:

scanf提供了一个优雅的答案:%n转换,它告诉你到目前为止已消耗了多少字节.

像这样使用它:

int pos;
while (sscanf(s, "%d%n", &d, &pos) == 1) {
    arr[n++] = d;
    s += pos;
}

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有