需要帮助找出无限循环

jon*_*hua 3 c infinite-loop while-loop

这是我的代码的简化版本:

void calc(char *s)
{
    int t = 0;
    while (*s)
    {
        if (isdigit(*s))
            t += *s - '0';
        else
            ++s;
    }
    printf("t = %d\n", t);
}

int main(int argc, char* argv[])
{
    calc("8+9-10+11");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

问题是while循环运行永远,虽然我希望它在最后一位数后停止1.而我的预期输出是t = 20.

Has*_*kun 12

s如果*s是数字,则不会递增,请考虑删除else子句,使代码成为:

while (*s)
{
    if (isdigit(*s))
        t += *s - '0';

    ++s;
}
Run Code Online (Sandbox Code Playgroud)