C - 函数和数组

时间:2013-06-25 21:31:10

标签: c arrays

我有这段代码: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。

我有一个out数组,可以处理我的细胞,就像这样。

1   2   3   4
1   1+2 3   4

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

在我将calc返回到result之后,我尝试将结果作为数组。

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

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

0   0   0   0   
0   3   0   0   

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

有什么问题? 感谢

1 个答案:

答案 0 :(得分:2)

下面:

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

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

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

除此之外,你只发布了一些功能,所以我们无法分辨其余的功能。你最后错过了一个大括号,我们无法看到你定义resSomaresSub的位置,所以不可能知道你的最终return语句在做什么。