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......
    }
4

2 に答える 2

3

同じ名前の構造体と変数がありますstack。これは非常に悪く、あなたとコンパイラを混乱させます。構造/クラス名には大文字を使用してください。

于 2013-01-18T14:40:38.263 に答える
1

あなたのvoid fun(S *stack,S *post,char a)機能では、あなたは使用しています

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

char2 つの sを比較します。strcmp()文字列を比較するために使用されるため、代わりにこれを使用します。

stack->array[stack->top] != a
于 2013-01-18T14:41:56.640 に答える