我有这段代码: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。
有什么问题? 感谢
答案 0 :(得分:2)
下面:
if(vetor[i] == '+')
当您找不到+
标志时,您的功能不会执行任何操作。这就是为什么你只是在你的输出中获得3。它会将{1}和2添加到1+2
,但不对其他所有数字执行任何操作,因为它们中没有+
个符号。
首先,您应该查找一个数字,然后使用strtol()
获取指向下一个字符的指针。然后,如果它不是NULL
,请寻找一个加号,如果找到一个,请获取下一个数字并添加它们。如果不这样做,只需返回您找到的第一个号码。
除此之外,你只发布了一些功能,所以我们无法分辨其余的功能。你最后错过了一个大括号,我们无法看到你定义resSoma
或resSub
的位置,所以不可能知道你的最终return
语句在做什么。