Wie verwende ich sscanf in Schleifen?
Gibt es eine gute Möglichkeit, eine Zeichenfolge mit @ zu durchlaufesscanf
?
Sagen wir, ich habe eine Zeichenfolge, die so aussieht:
char line[] = "100 185 400 11 1000";
und ich möchte die Summe ausdrucken. Was ich wirklich gerne schreiben würde, ist folgendes:
int n, sum = 0;
while (1 == sscanf(line, " %d", &n)) {
sum += n;
line += <number of bytes consumed by sscanf>
}
, aber es gibt keinen sauberen Weg, um diese Informationen aus @ zu bekommsscanf
. Wenn die Anzahl der verbrauchten Bytes zurückgegeben würde, wäre dies nützlich. In solchen Fällen kann man einfach @ verwendstrtok
, aber es wäre schön in der Lage zu sein, etwas Ähnliches zu schreiben, wie Sie es von @ aus tun könnestdin
:
int n, sum = 0;
while (1 == scanf(" %d", &n)) {
sum += n;
// stdin is transparently advanced by scanf call
}
Gibt es eine einfache Lösung, die ich vergesse?