如何在循環(huán)中使用scanf?是否有一種很好的方法來(lái)循環(huán)字符串sscanf?假設(shè)我有一條看起來(lái)像這樣的字符串:char line[] = "100 185 400 11 1000";我想打印這筆錢。我真正想寫(xiě)的是:int n, sum = 0;while (1 == sscanf(line, " %d", &n)) {
sum += n;
line += <number of bytes consumed by sscanf>}但是沒(méi)有干凈的方法可以把這些信息從sscanf..如果它返回所消耗的字節(jié)數(shù),這將是有用的。在這種情況下,你可以用strtok,但是如果能寫(xiě)出一些類似于你能做的事情,那就太好了。stdin:int n, sum = 0;while (1 == scanf(" %d", &n)) {
sum += n;
// stdin is transparently advanced by scanf call}有什么簡(jiǎn)單的解決辦法我忘了嗎?
1 回答

桃花長(zhǎng)相依
TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊
%n
sscanf()
#include <stdio.h>int main(void){ char line[] = "100 185 400 11 1000"; char *data = line; int offset; int n; int sum = 0; while (sscanf(data, " %d%n", &n, &offset) == 1) { sum += n; data += offset; printf("read: %5d; sum = %5d; offset = %5d\n", n, sum, offset); } printf("sum = %d\n", sum); return 0;}
- 1 回答
- 0 關(guān)注
- 535 瀏覽
添加回答
舉報(bào)
0/150
提交
取消