程序不起作用(编译问题)

时间:2014-02-18 13:13:21

标签: c string

您好我在编译时遇到了一个小问题。

所以我的程序中的问题是:

  1. 括号(STR1); - 函数调用的参数太少
  2. void括号(str,len) - '括号'的冲突类型
  3. Ny code -

    #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);
     }
    

    我很想知道这些错误是什么产生的,我怎样才能安排这个程序。感谢

6 个答案:

答案 0 :(得分:2)

更改

void brackets(str,len)  

void brackets(char str[], int len)  

,您的函数调用应为brackets(str, len);。并且还要改变

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

len = strlen(str);

答案 1 :(得分:1)

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

括号(STR1);

必须成为

括号(str1,len);

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

对于第一个错误,当您声明一个函数来获取N个参数时,需要使用N个参数调用它。函数的例外是声明采用variable number of arguments

答案 4 :(得分:0)

这是您的问题:brackets(str1);

您只使用一个参数调用brackets,但您将其定义为:

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

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

答案 5 :(得分:0)

您的代码中出现多个错误

main

开始

你没有在main中声明str1,而是在brackets(str1);中使用它。我认为你的意思是str,因为你声明了char str[99];

所以按brackets(str);

进行更改

同样void brackets(str[], len)函数未指定函数参数的数据类型请将其更改为void brackets(char str[], int len)

同样在主len = srtlen(str);中,srtlen无效,但请len = strlen(str);

最后你打电话给brackets(str1);,但brackets期待两个参数,所以请在brackets(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 = 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);
 }