c - 在 C 中对 char* 中的数字求和

标签 c char integer int strtol

我需要从 char* 中总结一些不同的数字。

char 类似于 "12,38,40",结果为 90,但也可以是 "12/5?10,-2​​0"结果应该是 7。

我已有的代码是:

extern int Add()
{
    char *string = "ab230c,i d*(s370*(20k-100d";
    char *totaal = string;

    int Sum = 0;

    while (*totaal)
    {
        if (isdigit(*totaal)) 
        {
            int getal = strtol(totaal, &totaal, 10);
            printf("%ld\n", getal);

            if(getal >= 0)
            {
                Sum += getal;
            }
        }
        else 
        {
            totaal++;
        }
    }
    printf("the sum of all numbers is: %d\n", Sum);
    return Sum;
}

它可以完美地处理除负数以外的所有内容,它只是忽略 - 并添加 10。

有人知道怎么解决吗?我无法理解它。

最佳答案

将您的 if 条件更改为:

if (isdigit(*totaal) || (*totaal=='-'))

strtol 能够处理负数。
例如strtol("-15",NULL,10) 产生 -15

关于c - 在 C 中对 char* 中的数字求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23915350/

相关文章:

c - 如何从 char * 中过滤字母数字字符

methods - 如果我不指定数字的类型,为什么 count_ones 不起作用?

c - 最后修改字段和下载文件

C使用strtok解析输入文件

C : Character swapping

php - PHP 中的 round 显示科学记数法而不是完整数字

python - 将数字添加到Python中数字的字符串表示形式

C 将 void 指针转换为函数指针

c - 进程间信令查询 Linux

java - “Char”类型未按预期转换为 'String' 类型