0

s1 と s2 の一番上のカードかどうかを確認する必要があります。s1 はカードのスタックであり、s2 も同様です。私がすでに持っているstack_top関数は次のとおりです。

/* Retrive data from the top of the stack */
node_data stack_top(stack *s){
  if(!stack_empty(s)){      /* If the stack is not empty */
    return (s->top->data);  /* Return the data */
  }
  else{             /* Otherwise there is an error */
    cardlist_error("stack_top called on empty stack");
  }
}

私が持っていた

while (strcmp (stack_top(s1), stack_top(s2)) ==0 )
//then do the following..

しかし、私はsegmentation faultそれらを2つ比較するにはどうすればよいですか?

4

1 に答える 1

1

stack2 つのポインターが両方とも同じインスタンスを指しているかどうかを確認したい場合は、それらのアドレスが一致することを確認してくださいs1 == s2

2 つのstackポインターが両方とも同一のデータを保持し、構造体に非ポインター メンバーしかないことを確認したい場合は、 を確認できますmemcmp(s1, s2, sizeof(*s1)) == 0

2 つのポインターが両方とも同一のデータを保持し、構造体にポインター (文字列など) があることを確認したい場合はstack、2 つのインスタンスをそれぞれのメンバーを順番に比較することによって比較する関数を作成する必要がある場合があります。

于 2012-12-04T23:16:09.527 に答える