Как использовать sscanf в циклах?

Есть ли хороший способ перебрать строку с помощью sscanf ?

Допустим, у меня есть строка, которая выглядит так:

char line[] = "100 185 400 11 1000";

и Я хочу напечатать сумму. Я действительно хотел бы написать следующее:

int n, sum = 0;
while (1 == sscanf(line, " %d", &n)) {
  sum += n;
  line += <number of bytes consumed by sscanf>
}

но нет чистого способа получить эту информацию из sscanf . Если он вернет количество потребленных байтов, это будет полезно. В таких случаях можно просто использовать strtok , но было бы неплохо написать что-то похожее на то, что вы можете сделать из stdin :

int n, sum = 0;
while (1 == scanf(" %d", &n)) {
  sum += n;
  // stdin is transparently advanced by scanf call
}

Есть ли простое решение I ' м забыли?

23
задан Jonathan Leffler 14 October 2015 в 00:04
поделиться