我正在编写输入文件并将每个单词作为单独的 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* 数组的所有元素时,所有元素都与从文件中检索到的最后一个元素相同。例如,如果文档中有三个标签,分别定义为“一”、“二”和“三”,那么在第一次循环结束时,数组将包含“一”,第二次将包含“二”和“二”,第三次将包含“三”“三”和“三”。它还循环了一个额外的时间,将最后一个元素再次添加到数组中,使其成为数组中的四个“三”元素。有谁知道为什么会这样?
我还测试了这个,我将 value 转换为 int 并将其添加到 int 数组中,它工作正常。