我需要读取一个输入文件,如:
1 19 20 41 23 2 41 52 43 3 90 91 941 4 512 5 6 51 61
每个奇数行是一个整数.每个偶数行是未知的整数.
在C++中它非常容易
while( cin >> k ){ ............ }
我不习惯C,所以我无法用C语言.任何方法都可以吗?
运行输入文件:
#includeint main() { int k; while (scanf("%d", &k) == 1) { printf("read number: %d\n", k); } return 0; }
结果是:
read number: 1 read number: 19 read number: 20 read number: 41 read number: 23 read number: 2 read number: 41 read number: 52 read number: 43 read number: 3 read number: 90 read number: 91 read number: 941 read number: 4 read number: 512 read number: 5 read number: 6 read number: 51 read number: 61
这是您在原始问题中引用的代码的C模拟.
我这样做的方法是将其分解为两个操作:读取一行,然后读取该行中的整数.这是使用标准C库的延迟实现:
char line[1024], *p, *e; long v; while (fgets(line, sizeof(line), stdin)) { p = line; for (p = line; ; p = e) { v = strtol(p, &e, 10); if (p == e) break; // process v here } }