C 程序不工作(编译问题)

C 程序不工作(编译问题),c,string,C,String,您好,我在编译过程中遇到了一个小问题 因此,我的程序中的问题是: 括号(str1);-参数太少,无法调用函数 空括号(str,len)-“括号”的类型冲突 纽约代码- #include <stdio.h> #include <stdlib.h> #include <string.h> void brackets(char str[], int len); int main() { char str[99]; int len; printf("enter

您好,我在编译过程中遇到了一个小问题

因此,我的程序中的问题是:

  • 括号(str1);-参数太少,无法调用函数
  • 空括号(str,len)-“括号”的类型冲突
  • 纽约代码-

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    void brackets(char str[], int len);
    
    int main()
    {
    char str[99];
    int len;
    
    printf("enter Mathematical exercise: \n");
    gets(str);
    
    len = srtlen(str);
    
    brackets(str1);
    return(0);
    }
    
    void brackets(str,len)
    {
    char str1[99];
    int i,j = 0;
    
    for(i = 0; i < len; i++)
    {
        if (str[i] == '(')
        {
            i++;
            while(str[i] != ')')
            {
                str1[j] = str[i];
                i++;
                j++;
            }
        }
    }
    printf("%s\n",str1);
     }
    
    #包括
    #包括
    #包括
    空括号(字符str[],整数len);
    int main()
    {
    char-str[99];
    内伦;
    printf(“输入数学练习:\n”);
    获取(str);
    len=srtlen(str);
    括号(str1);
    返回(0);
    }
    空括号(短括号、长括号)
    {
    char-str1[99];
    int i,j=0;
    对于(i=0;i
    我很想知道这些错误是怎么产生的,我该如何安排这个程序才能工作。谢谢你的改变

    void brackets(str,len)  
    

    你的函数调用应该是
    括号(str,len)。也会改变

    len = srtlen(str); // Spelling mistake. 
    


    你的函数括号需要两个参数,所以你需要给他两个:

    括号(str1)

    必须成为


    括号(str1,len)

    您将方括号函数定义为接受两个参数,但只传递一个。也通过第二个

    对于第二个错误,如果没有为函数参数提供类型,编译器将假定它的类型为
    int
    。由于第一个参数已声明为
    char[]
    类型,因此声明(原型)与函数定义之间存在不匹配


    至于第一个错误,当您声明一个函数接受N个参数时,您需要使用N个参数调用它。异常情况是函数声明采用了。

    这是您的问题:
    括号(str1)

    您仅使用一个参数调用了
    方括号
    ,但您将其定义为:

    void brackets(char str[], int len);
    

    您需要传递一个int作为第二个参数。

    代码中似乎存在多个错误

    main开始

    您没有在main中声明
    str1
    ,而是在
    括号中使用它(str1)
    。我想你说的是
    str
    ,因为你声明了
    charstr[99]

    因此,通过
    括号(str)进行更改

    另外
    空括号(str[],len)
    函数未指定函数参数的数据类型请将其更改为
    空括号(char str[],int len)

    同样在main
    len=srtlen(str)
    srtlen
    无效,但将其设置为
    len=strlen(str)

    最后一次调用括号(str1)但是
    括号
    需要两个参数,所以请通过
    括号(str,len)在main中进行更改

    在上面的更改之后,您的代码现在是干净的,没有错误,如下所示

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    void brackets(char str[], int len);
    
    int main()
    {
        char str[99];
        int len;
    
        printf("enter Mathematical exercise: \n");
        gets(str);
    
        len = strlen(str);
    
        brackets(str,len);
        return(0);
    }
    
    void brackets(char str[],int len)
    {
        char str1[99];
        int i,j = 0;
    
        for(i = 0; i < len; i++)
        {
            if (str[i] == '(')
            {
                i++;
                while(str[i] != ')')
                {
                    str1[j] = str[i];
                    i++;
                    j++;
                }
            }
        }
        printf("%s\n",str1);
     }
    
    #包括
    #包括
    #包括
    空括号(字符str[],整数len);
    int main()
    {
    char-str[99];
    内伦;
    printf(“输入数学练习:\n”);
    获取(str);
    len=strlen(str);
    括号(str,len);
    返回(0);
    }
    空括号(字符str[],整数len)
    {
    char-str1[99];
    int i,j=0;
    对于(i=0;i
    将我的答案与haccks的答案结合起来:)错误消息中确实有线索。。。。。
    void brackets(char str[], int len);
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    void brackets(char str[], int len);
    
    int main()
    {
        char str[99];
        int len;
    
        printf("enter Mathematical exercise: \n");
        gets(str);
    
        len = strlen(str);
    
        brackets(str,len);
        return(0);
    }
    
    void brackets(char str[],int len)
    {
        char str1[99];
        int i,j = 0;
    
        for(i = 0; i < len; i++)
        {
            if (str[i] == '(')
            {
                i++;
                while(str[i] != ')')
                {
                    str1[j] = str[i];
                    i++;
                    j++;
                }
            }
        }
        printf("%s\n",str1);
     }