C将字符串中的字符串分配给覆盖的结构数组

时间:2017-04-22 02:33:22

标签: c arrays file struct

我从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; 
}

问题:数组中的每个结构现在都有来自文件最后一行的值。为什么是这样?我假设我分配了错误的内存,但我不知道在哪里/为什么/如何?

0 个答案:

没有答案