字符串C中的整数之和

时间:2017-11-03 03:47:23

标签: c pointers

这是我第一次使用指针,这就是为什么我的逻辑可能存在很大缺陷。 我正在编写一个程序,使用atoi()汇总字符串中的数字。例如,sumNumbers(" 1 2 b asdsd 3 4)应为10.这是我的程序,

int sumString(char string[]) {
    char *ptr=string;
    int index = 0;
    int len = strlen(string);
    int sum = 0;
    while(index < len) {
        while (ptr[0] == ' ') {
            ptr++;
            index++;
            if (index == len) {
                return sum;
            } 
        }
        while (atoi(ptr) == 0) {
            ptr++;
            index++;
            if (index == len) {
                return sum;
            }
        }
        if (atoi(ptr) != 0) {
            sum += atoi(ptr);
            ptr++;
            index++;
            while (ptr[0] != ' ' || atoi(ptr) != 0 || ptr[0] == '\0') {
                ptr++;
                index++;
            }
        }
    }
    return sum;
}

我的第一个条件应该摆脱所有空格,我的第二个应该继续运行所有字母,我的第三个应该加上atoi的值,继续前进到一个空格或一个字母,然后循环应该再次迭代并且前两个条件再次执行它们的任务。不幸的是,这适用于大多数情况,除非我将一个字母粘贴到一个数字上,例如&#34; 18b5&#34;。这应该返回23,但它返回18。

2 个答案:

答案 0 :(得分:0)

显然,我的一个问题是我的最后一个循环应该有&amp;&amp;而不是||在前两个陈述之间。

答案 1 :(得分:0)

最后一个循环应更改为:

        while (ptr[0] != '\0' && atoi(ptr) != 0) {
            ptr++;
            index++;
        }