2013-01-18 79 views
1

我實現算術計算器,但我得到的錯誤:錯誤之前 - >標記

錯誤:預期前主表達式「)」令牌 錯誤:預期主表達式前「 - >」令牌

我張貼包含錯誤的行。

#include<stdio.h> 
    #include<stdlib.h> 
    #include<string.h> 
    /*creating stack*/   
    typedef struct stack 
    { 
    int top; 
    char *array; 
    int max_size; 
    }S; 
    /*pushing character to it*/ 
    void push(S *st ,char ch) 
    { 
    if(st->top==st->max_size) 
    {printf("already full..delete some items :)");return ;} 
     printf("st->top=%d ",st->top); 
     strcpy(&st->array[st->top],&ch); 
     st->top++; 
     printf("push=%s ",st->array[st->top-1]); 
    } 
    /*deleting character*/ 
    void pop(S *st) 
    { 
    if(st->top==0) 
    {printf("it's empty..push some items :)");return ;} 

     st->top--; 
    } 
    void fun(S *stack,S *post,char a) 
    { 
     while(strcmp((&stack->array[stack->top]),&a)!=0) 
      { 
       pop(stack); 
       push(post,stack->array[stack->top+1]); 

      } 
      pop(stack); 
    } 
    int main() 
    { 
    int i,j; 
    char str[10000]; 
    /*initialize 3 stacks*/ 
    S *st =init(10000); 
    S *post=init(10000); 
    S *ans=init(10000); 
    /*actually code is very big so i am 
    giving only lines in which there is error*/ 
    //some code... 
    fun(stack,post,a); 
    //some code... 
      while(precedence(str[i])>precedence(stack->array[stack->top])) 
    //some code... 
    push(post,stack->array[stack->top]); 
    pop(stack); 
    //more code...... 
    } 
+3

那麼......它在抱怨什麼? – Mysticial

+3

這。格式化。是。所以。壞。所以。壞。 ! – Dariusz

+1

這段代碼真的很糟糕,它有很多錯誤,向別人展示這些代碼並尋求幫助是相當不禮貌的。試着組織一下你的代碼,這對你有很大的幫助。適當地格式化它,如果這是在談論類型或對象,則使用清楚的名稱。在使用它之前聲明一個變量。 –

回答

3

你有一個結構和一個變量相同的名稱stack。這非常糟糕,讓你和編譯器感到困惑。結構/類名使用大寫字母。

+0

thanks.i只是使用了單詞堆棧,而不是我錯誤地創建的單詞。 –

1

在你void fun(S *stack,S *post,char a)功能,您使用的

strcmp((&stack->array[stack->top]),&a)!=0 

比較兩個char秒。 strcmp()是用來比較字符串,所以用這個代替:

stack->array[stack->top] != a 
+0

非常感謝vey。 –

相關問題