2014-02-18 109 views
-2

你好我在编译过程中遇到了一个小问题。程序不起作用(编译问题)

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

  1. 括号(STR1); - 太少参数函数调用
  2. 空括号(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); 
} 

我很想知道这些错误出现什么,以及如何我可以安排这个方案将工作。由于

+0

线索是真的在错误信息..... – mjs

回答

2

变化

void brackets(str,len) 

void brackets(char str[], int len) 

和你的函数调用应该是brackets(str, len);。 ,改变

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

len = strlen(str); 
1

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

括号(STR1);

必须成为

括号(str1,len);

+1

结合我的答案与haccks的:) –

0

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

0

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

至于第一个错误,当你声明一个函数接受N个参数时,你需要用N个参数来调用它。函数声明的例外是variable number of arguments

0

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

你只用一个参数调用brackets,但你把它定义为这样:

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

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

0

多个错误似乎在你的代码

main

你没有宣布主要str1开始,但用它在brackets(str1);。我觉得你的意思是它通过str因为你宣布它char str[99];

所以通过brackets(str);更改

void brackets(str[], len)函数不speci函数参数的年度数据类型,请将其更改为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); 
}