2016-03-21 48 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是一個變量成員,並試圖聲明一個變量作爲一個變量。在任何編程語言中,你都不能兩次聲明同一個變量。
爲什麼你想要做到這一點,究竟需要什麼?可能我們可以解決問題,如果我們確定了你在這裏執行的邏輯。

查看在編譯時在內存中聲明的變量,變量中的值來自運行時。如果你這樣做,你不能因爲duabi將在運行時分配,而s 結構變量將在編譯時聲明。