c - 从字符串中读取数字列表

标签 c stringstream scanf string-parsing

我想读取存储在字符串中的以空格分隔的数字列表。
我知道如何使用 C++ 中的 stringstream 完成此操作 -:

string s = "10 22 45 67 89";
stringstream ss(s);
int numbers[100];
int k=0, next_number;
while(ss>>next_number)
    numbers[k++]=next_number;

我的问题是我们如何在 C 中做到这一点? 我在 C 中阅读了有关 sscanf() 的内容,但我不确定它在这里是否有用。

最佳答案

使用 sscanf()"%n 知道从哪里开始下一次扫描。

char *s = "10 22 45 67 89";
for (k=0; k<100; k++) {
  int n;
  int cnt = sscanf(s, "%d %n", numbers[k], &n);
  if (cnt != 1) break;
  s += n;
}
if (*s) Handle_DidNotEndCleanly();

关于c - 从字符串中读取数字列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26724086/

相关文章:

C++字符串流转换错误: segmentation fault

c - 如何在 C 的同一行中扫描字符串(带空格)和整数

c - 使用 GnuTLS 构建 wget?

提取字符串崩溃的代码

c++ - C++中Stringstream字符串到整数的转换

c - 无效的转换标识符 '.'

c - 为什么这个 sscanf 示例代码输出错误?

c - 访问冲突阅读链接列表

java - 在java中读取C静态结构

c++ - 如何测试stringstream operator>>是否解析了错误的类型并跳过它