我从C中的文件中读取一行,用空格分割,然后分配给结构类型的数组。问题是,一切都被循环的最后一次迭代所覆盖。我已经简化了我的代码来说明问题。
结构是:
void readInput(void)
我从文本文件中读取,并尝试像这样分配给struct数组:
typedef struct place place;
struct place {
char* name; //string, assume just 1 word
char* word1; //string, assume just 1 word
char* word2; //string, assume just 1 word
};
//initialise array of the struct place
int numberPlaces = 10; //just assume this is hardcoded and we know there are 10 places (10 lines in the file)
place* places;
places = malloc(100*numberPlaces*sizeof(places));
//set values to NULL
for(int p = 0; p < numberPlaces; p++) {
places[p].name = NULL;
places[p].word1 = NULL;
places[p].word2 = NULL;
}
问题:数组中的每个结构现在都有来自文件最后一行的值。为什么是这样?我假设我分配了错误的内存,但我不知道在哪里/为什么/如何?