为什么会出错?

时间:2014-02-17 11:14:27

标签: c string

我写了下面的代码块我在函数find_brackets和计算中一直有错误。谁能向我解释如何解决它。这两个函数将一起运作

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void find_brackets(char str[], int len);
void calculation(char str1);

int main(void) {
    int len;
    char str1[99];
    char str[99]; // (4/2)
    printf("Enter a math exercises: \n");
    gets(str);
    len = strlen(str);

    find_brackets(str);
    calculation(str1);
}

void find_brackets(str[], len) {
    char str1[len];
    int i, j;
    for(i = 0; i < len; i++) {
        if(str[i] == '(') {
            i++;
            while(str[i] != ')') {
                str1[j] = str[i];
                i++;
                j++;
            }
        }
    }
}

void calculation(str1[], len) {
    char str[len];
    char strp[len];
    char str2[len];
    char str3[len];
    char *rev;
    int i, k, j = 0, aPos, zPos;
    int sum1, sum2;
    float sum;

    strcpy (str, str1);
    strcpy (strp, str1);

    aPos = zPos = -1;

    for(i = 0; i < len; i++) {
        if(str[i] == '+') {
            aPos = i;
        }
        else if(str[i] == '/') {
            zPos = i;
            break;
        }
    }
    if(aPos != -1 && zPos != -1) {
        for(k = 0, i = zPos-1; i > aPos; --i, ++k) {
            str2[k] = str[i];
        }
    }

    rev = strrev(str2);
    printf("%s\n", rev);

    for(i = 0; i < len; i++) {
        if(strp[i] == '/') {
            while(strp[i+1] != '+') {
                str3[j++] = strp[++i];
            }
        }
    }
    printf("%s\n", str2);
    sum1 = atoi(str2);
    sum2 = atoi(str3);
    sum = sum1 / sum2;
    printf("%.0f\n", sum);
}

感谢您的帮助,我很感激

2 个答案:

答案 0 :(得分:1)

功能声明为void find_brackets(char str[], int len);,来自main()的来电者为find_brackets(str);,这是错误的。第二个论坛在哪里。

函数calculation()在声明和调用方式上也有所不同。在函数形式参数中保持匹配,然后传递被调用者实际参数。

答案 1 :(得分:0)

    void find_brackets(str[],len) 
    void calculation(str1[],len)

请在功能定义时指定lenstr[]的数据类型。

另外

find_brackets(str);
calculation(str1);

传递一个参数,但你声明了两个也是错误的。