给定一个文本文件,例如:
cdcd dcdaqw cdcd KKAN 89 bxb hqhq1bhA
100uuz
cnkx
n jk xjx100mc
...
.+1+
我想找到各个字符串中包含的所有数字的总和: 在给定的示例中,我想求和 89 100 1 100 1。
我对此做了很多尝试(IE,每个字符串的 fscanf 并尝试将 int 值保存在数组中),但都失败了。
最佳答案
所以这相当简单。在文件中的每个位置,我们都会询问“这里有数字吗?”。如果有的话,打印出来。如果没有尝试从下一个字符开始。
根据我们对 fscanf()
工作原理的理解,我们最多将每个字符测试两次。
代码
#include <stdio.h>
#include <stdbool.h>
int main() {
FILE * fd = fopen("in.txt", "r");
while (true) {
unsigned number;
int rc = fscanf(fd, "%u", &number);
if (rc == EOF)
break;
else if (rc == 0)
fseek(fd, 1, SEEK_CUR);
else if (rc == 1)
printf("%u\n", number);
}
}
输入文件
cdcd dcdaqw cdcd KKAN 89 bxb hqhq1bhA
100uuz
cnkx
n jk xjx100mc
...
.+1+
输出
89
1
100
100
1
后续步骤
如何扩展它来报告总和而不是数字本身应该是相当明显的。
关于c - 字符串中包含的数字之和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28990245/