我正在寫的代碼輸入一個文件,並作爲一個單獨的字符中的每個字爲單位讀取*是這樣的:分配特定的char *數組元素的數組的所有元素設置到該元素 - C++
char label[8];
char type[5];
char value[6];
while (!input.eof()) {
input >> label;
input >> type;
input >> value;
storeSymbols(label, type, value);
}
然後我將其設置爲一個char *陣列的像這樣的元件:
void storeSymbols(char* lab, char* type, char* val) {
labels[symCount] = lab;
types[symCount] = type;
values[symCount] = val;
symCount++;
}
然而,當我打印出所有的字符*陣列的元件,所有的元素都相同最後一個元素retri從文件中刪除。例如,如果文檔中有三個標籤,分別定義爲「one」,「two」和「three」,則在第一個循環結束時,數組將包含「one」,第二次包含「兩「和」兩「,第三次將包含」三「」三「和」三「。它還循環了一段額外的時間,再次將最後一個元素添加到數組中,使其在數組中成爲四個「三」元素。有誰知道爲什麼會發生這種情況?
我也測試過這裏,我將值轉換爲一個int並將其添加到一個int數組,它工作正常。
第二位的代碼是否也在第一位代碼的循環內? – Xymostech 2013-03-11 01:56:50
我想我們在這裏需要更多的代碼。 – SirPentor 2013-03-11 01:58:18
您需要複製/複製字符串,而不是一遍又一遍地分配指向同一緩衝區的指針(這正是您現在正在執行的操作)。 – 2013-03-11 02:00:45