2016-10-16 45 views
0

我有這個變量:如何將元素添加到C中的char * var []?

char *var[] = {get_answer(answers, 0), get_answer(answers, 1)}; 

我想補充get_answer(answers, 2)作爲var[]的第三個元素,這是我曾嘗試:

var[2] = get_answers(answers, 2); 

它似乎並沒有做任何事情。 我應該如何去追加元素到上述變量?

+1

1.您正在使用函數調用的結果初始化aray。初始化器是編譯時,所以這是行不通的(你的編譯器警告告訴你什麼?)2.即使如此,var只有兩個元素,所以你不能「追加」一個元素。你可以聲明var是3個元素。 –

+0

您應該考慮使用可以動態添加元素的其他數據結構(即鏈接列表...)。 – b1sub

回答

0

根據您在初始化過程中提供的元素數自動確定數組var的大小。它不會隨着您爲其分配更多元素而發生變化。所以,你不能在var[2]分配。您可以使用malloc()動態分配指針數組。或者在初始化期間提供更多的元素,比如NULL指針。或者明確提供數組的大小。

char *var[] = {get_answer(answers, 0), get_answer(answers, 1), NULL, NULL, NULL}; // 5 elements 

char *var[10] = {get_answer(answers, 0), get_answer(answers, 1), NULL, NULL, NULL}; // 10 elements 
0

的陣列定義爲:

char *var[] = {get_answer(answers, 0), get_answer(answers, 1)}; 

具有 「固定的」 大小兩個元素。它和你寫的一樣:

char *var[2] = {get_answer(answers, 0), get_answer(answers, 1)}; 

因此,沒有空間容納第三個元素。

有兩種基本選擇:

1)聲明var與空間附加條目(或條目):

char *var[3] = {get_answer(answers, 0), get_answer(answers, 1)}; 
// ... 
var[2] = get_answers(answers, 2); 

2)用來初始化與第三元件到位:

char *var[] = {get_answer(answers, 0), get_answer(answers, 1), get_answers(answers, 2)};