ファイルを入力し、各単語を次のように個別の char* として読み取るコードを書いています。
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++;
}
ただし、char* 配列のすべての要素を出力すると、すべての要素がファイルから取得した最後の要素と同じになります。たとえば、ドキュメントに 3 つのラベルがあり、「1」、「2」、「3」と定義されている場合、最初のループの最後では配列に「1」が含まれ、2 回目では「」が含まれます。 two」と「two」、3回目は「three」「three」と「three」が含まれます。また、余分な時間をループして、最後の要素をもう一度配列に追加し、配列内の 4 つの "3" 要素にします。なぜこれが起こっているのか誰にも分かりますか?
値を int に変換して int 配列に追加したところ、これもテストしましたが、正常に動作します。