c - 为什么会出现错误呢?

标签 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);
}

感谢您的帮助,我很感激

最佳答案

函数声明为void find_brackets(char str[], int len);以及来自 main() 的调用者是 find_brackets(str);这是错误的。第二个参数在哪里。

还有功能calculation()声明和调用方式有所不同。保持函数形式参数与传递的被调用者实际参数的匹配。

关于c - 为什么会出现错误呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21827543/

相关文章:

c - 优化选择排序?

c++ - 用字节初始化 char* 和 std::string

c - 如何将最终摘要消息放入 yacc 程序中?

c - C语言中如何实现同时输入和输出?

c - 使用 Cmockery 验证函数指针是否相等

无法将参数存储为数组并在 C 中打印它们

iphone - 分配给 'UILabel *__weak' 到 'NSString *__strong' 的不兼容指针类型?

java - 在不使用正则表达式的情况下检查 String 是否包含 String[] 中存在的任何值 - Java

java - CharAt 遇到麻烦

javascript - 查找数组中最长的单词