2016-03-21 14 views
-2

şimdi, havalimanı destinasyonlarından sonra sayısız yapı oluşturmayı içeren bir program yapıyorum ama bir çözüm bulamadığım bir problemle karşılaştım. Yapımın adını stringin kendisi yerine bir değişken kullanarak nasıl verebilirim? Ben o yapı oluşturmak istiyoruzBir değişkeni bir yapının adı olarak nasıl ayarlayabilirim?

struct airport { 
    char name; 
    int capacity; 
} 

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

ve: gibi id yana

struct airport dubai; 
+1

Bunu C.'de yapamazsınız. Neden yapmak istersiniz? –

+2

@ l3x: Bunun için iyi uygulamalar var. Fakat bu, Python gibi dinamik olarak yazılan diller gerektiriyordu. – Olaf

+0

"name" alanınızı bir işaretçi veya dizilime değiştirin. –

cevap

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++]); 
} 

şimdi ile bir havaalanı oluşturabilirsiniz:

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

ve üstü strcmp kullanarak havaalanı bulmak için dizinin geçer.

0

değişken üyesidir ve bir değişken olarak bir değişkeni bildirmek için çalışıyoruz. Ve herhangi bir programlama dilinde aynı değişkeni iki kere bildiremezsiniz.
Bunu neden yapmak istiyorsunuz ve tam olarak ihtiyaç nedir? Burada hangi mantığı uyguladığınızı tespit edersek sorunu çözebilir miyiz?

Derleme zamanında bellekte bildirilen değişkenlere bakın ve değişkenlerdeki değer çalışma zamanında gelir. Ve eğer bunu yaparsanız, duabi çalışma zamanında atanacağından, yapı değişkeni derleme zamanında bildirileceğinden bunu yapamazsınız. Bir modülün bir örnek olarak

İlgili konular