Como usar o sscanf em loops?
Existe uma boa maneira de fazer um loop sobre uma string comsscanf
?
Digamos que eu tenha uma string parecida com esta:
char line[] = "100 185 400 11 1000";
e eu gostaria de imprimir a soma. O que eu realmente gostaria de escrever é o seguinte:
int n, sum = 0;
while (1 == sscanf(line, " %d", &n)) {
sum += n;
line += <number of bytes consumed by sscanf>
}
mas não há uma maneira limpa de obter essas informaçõessscanf
. Se retornasse o número de bytes consumidos, isso seria útil. Em casos como este, pode-se apenas usarstrtok
, mas seria bom poder escrever algo semelhante ao que você pode fazer a partirstdin
:
int n, sum = 0;
while (1 == scanf(" %d", &n)) {
sum += n;
// stdin is transparently advanced by scanf call
}
Existe uma solução simples que estou esquecendo?