-4

我有这个代码:Link in the comments, could put here 试图做一个求和函数,它在顶部,好的,它的工作,但我无法传递给我的数组。

函数原型:

int calc(char vetor[]){

我正在做这样的事情:

int result = calc(out);

在我的 calc 函数中,我返回一个从数组中捕获的 int。这是我的功能:

    for(i=0;i<strlen(vetor);i++){
   if(vetor[i] == '+'){
        aux = i-1;
        //reads what is behind +
        while((vetor[aux] >= '0') && (vetor[aux] <= '9')){
            auxSum1 += atoi(&vetor[aux]);
            aux--;
        }
        //Aux = i+1 to read the next +
        aux = i+1;

        while((vetor[aux] >= '0') && (vetor[aux] <= '9')){
            //reads what is in front of +

            auxSoma2 += atoi(&vetor[aux]); 
          aux++;
        }

        //return result sum
        resSoma = auxSoma2 + auxSoma1;

    }
return resSoma+resSub;

我有这个-和+。最后,我返回所有操作的结果。如果 - 不存在,总和 +0。

我有一个输出数组,可以处理我的单元格,就像这样。

1   2   3   4
1   1+2 3   4

处理来自单元格的所有值。

在我将计算返回结果后,我尝试将结果设为一个数组。

int result = calcular(out);
sprintf(out, "%d", result);

但是当我打印所有的东西时,就像这个例子一样,它会发生:

0   0   0   0   
0   3   0   0   

我做错了什么?当我有字符串时(例如测试)出现 0。

怎么了?谢谢

4

1 回答 1

2

这里:

if(vetor[i] == '+')

当您找不到+标志时,您的函数不会执行任何操作。这就是为什么你只是在输出中得到那个 3 的原因。它将您拥有的 1 和 2 相加1+2,但对所有其他数字没有任何作用,因为它们没有+符号。

您应该首先查找一个数字,然后使用它strtol()来获取指向下一个字符的指针。然后,如果不是NULL,则查找加号,如果找到,则获取下一个数字并将它们相加。如果不这样做,只需返回您找到的第一个数字。

除此之外,您只发布了您的部分功能,因此我们无法确定其余功能在做什么。你最后缺少一个大括号,我们看不到你在哪里定义resSomaor resSub,所以不可能知道你的最后return陈述在做什么。

于 2013-06-25T22:47:13.133 回答