2017-09-18 17 views
-2

こんにちは私は "assign_guest_at"の特定の座席にどのように割り当てることができますかについての助けが必要です。ポインタから構造体にアクセスする

この関数は、 "行"と "col"(この 関数のパラメータで指定)に "g"を座席に割り当てようとします。座席に既定のゲストがある場合、つまり、ゲスト名が「???」のゲスト 最初の名前が「???」の場合、 新しいゲスト「g」をその座席に割り当て、 メソッドがtrueを返すことができます。それ以外の場合、この座席は とみなされ、ゲストは を割り当てずに0(false)を返します。

struct guest { 
     char last_name[30]; 
     char first_name[30]; 
    }; 
    struct auditorium_seating { 
     struct guest **seating; 
    }; 
    void guest_init(struct guest *g, char *info) 
    { 
     char *token; 
     token = strtok(info, "/"); 
     strcpy(g->first_name, token); 
     token = strtok(NULL, "\0"); 
     strcpy(g->last_name, token); 

    } 
    int assign_guest_at(int row, int col, struct auditorium_seating *a, struct guest* g) 
    { 

     if (a->seating[row][col] == "???") 
     { 


      return 1; 
     } 
     else 
     { 
      return 0; 
     } 
    } 
+0

Cは_メソッドをサポートしていません。あなたのスニペットにはメソッドがありません。 – Olaf

+0

申し訳ありませんが、ポインタから来ていると思われました – Deathknight

+0

コメントを取り消していない場合は、それが役に立つかもしれないことについていくつかの調査をしてください。私はポインタについて言及しなかった。あなたのスニペットに** **メソッド**はありません。関数のみ。 – Olaf

答えて

1

という名前のstrcmp内の関数があるC言語で文字列を比較するために、それは2つの文字列を比較し、両者が同じなら0を返します。

構造体で使用するには、デフォルトのゲストロジックを使用して、各フィールドを使用する必要があります。

は、私は以下のこのコードが何をしたいんだと思う:あなたはその「???」によって何を意味するのか

int assign_guest_at(int row, int col, struct auditorium_seating *a, struct guest* g) 
{ 

    if (strcmp(a->seating[row][col].first_name, "???") == 0 && 
      strcmp(a->seating[row][col].last_name, "???") == 0) 
    { 
     a->seating[row][col] = *g; 
     return 1; 
    } 
    else 
    { 
     return 0; 
    } 
} 
0

わかりません。しかし、我々は、それは(おそらく初期化時に割り当てられた)文字列であることを理解していれば、次のコードスニペットは、あなたの関数を実装しています

int assign_guest_at(int row, int col, struct auditorium_seating *a, struct guest* g) 
{ 
    if (!strcmp(a->seating[row][col].last_name, "???") 
     && !strcmp(a->seating[row][col].first_name, "???")) 
     { 
     memcpy(&a->seating[row][col], g, sizeof (struct guest)); 
     return 1; 
     } 
    return 0; 
} 

機能のチェックは、[行] [COL]で座席がデフォルトのゲストを持っている場合( last_name & first_nameに「???」文字列を追加して上に定義したように、その場合は*gという席がコピーされます。

関連する問題