2014-02-18 40 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); 
}