2016-03-21 9 views
-2

今私は空港の目的地にちなんで名付けられた数多くの構造を作成するプログラムを作っていますが、私は解決策が見つからないような問題に遭遇しました。文字列そのものの代わりに変数を使用して構造体の名前を与えるにはどうすればよいですか?以下のように:構造体の名前として変数を設定するにはどうすればよいですか?

struct airport { 
    char name; 
    int capacity; 
} 

int main(void) 
{ 
    id = "dubai"; 
    struct airport id; 
} 

と私はそれが構造体を作成したい:

struct airport dubai; 
+1

あなたはCでそれを行うことはできません。とにかくそれをやりたいのですが? –

+2

@ l3x:これには良いアプリケーションがあります。しかし、これにはPythonのような動的に型付けされた言語が必要です。 – Olaf

+0

'name'フィールドをポインタまたは配列に変更します。 –

答えて

0

struct airport{ 
    char *name; 
    int capacity; 
} all_airports[MAX+AIRPORTS]; 
int nextAirport; 

struct airport *newAirport(char *name, int capacity) 
{ 
    all_airports[nextAirport].name= malloc(strlen(name)+1); 
    strcpy(all_airports[nextAirport].name, name); 
    all_airports[nextAirport].capacity= capacity; 
    return(&all_airports[nextAirport++]); 
} 

今あなたが空港を作成することができます。

int main(){ 
    struct airport *myAirport= newAirport("Dubai",1000); 
} 

以降strcmpを使用して、あなたの空港を検索するために、アレイを通過します。

0

idはメンバー変数であり、あなたが変数として変数を宣言しようとしているので。どのプログラミング言語でも、同じ変数を2回宣言することはできません。
なぜこれを実行したいのですが、正確に何が必要ですか?ここで実装しているロジックを特定すれば、問題を解決できるでしょうか。

コンパイル時にメモリ内で宣言されたルック変数と、変数の値は実行時に取得されます。 duabiが実行時に割り当てられ、構造変数がコンパイル時に宣言されるため、これを行うとできません。モジュールの例として

関連する問題