2012-11-05 226 views
-1

我正在進行分配。我開始與結構:指向結構的指針

struct figures_struct 
{ 
    char figure_name[130]; 
    double figure_coordinates[1000000]; 
}; 

當我從文件中讀取圖形的名字,我將其存儲到結構如下:

strcpy(figures[i].figure_name,f_name); 

現在我要修改我的代碼,需要使用動態內存。我做了:

struct figures_struct 
{ 
    char figure_name[130]; 
    double figure_coordinates[100000]; 
}; 

struct figures_struct *figures = malloc(size * sizeof(struct figures_struct)); 

現在,我該如何將圖形名稱存儲到我的結構? figures[i].figure_name似乎沒有工作。

+0

它有幫助,如果你包括什麼錯誤,你看到什麼,你已經嘗試過。 –

+1

「似乎沒有工作」是什麼意思? 'figure [i] .figure_name'本身沒有任何問題。 'strcpy(figure [i] .figure_name,f_name)'會很好地工作。 – AnT

+0

結構訪問的*精確*相同的語法將工作。這兩個暗示你的指數(我)永遠不會超過你的維度(大小)。你的任務是否要求你可以隨着時間的推移增加你分配的結構數量,因爲這是一個完全不同的問題(和答案)。 – WhozCraig

回答

2

strcpy(figures[i].figure_name, f_name);

這仍然將與指針工作(如指針和數組是可以互換的在C)

+3

直到括號評論,我同意。括號內的評論(目前__指針和數組在C'_中幾乎是可以互換的)並不是它繼續工作的原因,而且並不完全如此。指針和數組密切相關;它們是不可互換的,特別是在內存分配的地方。然而,'strcpy()'仍然有效的原因是'figure [i]'仍然是一個結構,就像以前一樣,所以同樣的初始化技術也適用於結構。 –

+0

@JonathanLeffler啊我的壞話,我幾乎用這個詞來表示你告訴我的。 –

+2

@JonathanLeffler:也許更合適的說法是數組可以用於需要指針右值的地方。 –

0

它將立即工作作爲「i」是小於「大小」。