字符串中包含的数字总和

时间:2015-03-11 15:07:13

标签: c arrays string

给定一个文本文件,例如:

cdcd dcdaqw cdcd KKAN 89 bxb hqhq1bhA
100uuz
cnkx


 n jk xjx100mc
...
.+1+

我想找到各种字符串中包含的所有数字的总和: 在给定的例子中,我想总结89 100 1 100 1。

我做了很多尝试(IE,每个字符串的fscanf并试图将int值保存在数组中),但它们都失败了。

2 个答案:

答案 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

您在页面底部有一个示例,可以满足您的需求。您只需要手动跳过非数字字符