给定一个文本文件,例如:
cdcd dcdaqw cdcd KKAN 89 bxb hqhq1bhA
100uuz
cnkx
n jk xjx100mc
...
.+1+
我想找到各种字符串中包含的所有数字的总和: 在给定的例子中,我想总结89 100 1 100 1。
我做了很多尝试(IE,每个字符串的fscanf并试图将int值保存在数组中),但它们都失败了。
答案 0 :(得分:3)
所以这很简单。在文件中的每个位置,我们都会询问"这里有一个数字吗?"。如果有,请将其打印出来。如果没有尝试从下一个字符开始。
根据我们对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
如何扩展它以报告总和,而不是数字本身应该是相当明显的。
答案 1 :(得分:0)
您可以使用strtol
您在页面底部有一个示例,可以满足您的需求。您只需要手动跳过非数字字符