Я пытаюсь использовать realloc для динамического создания экземпляров структуры, заполняя ее данными из временной структуры, когда я иду. Программа выходит из строя, когда она достигает линии, чтобы повторно вывести указатель структуры, но я не уверен, как я должен структурировать эту функцию. У меня есть следующий код:Использование realloc в массиве динамической структуры
#define MAX_STRING 50
struct data {
int ref;
int port;
char data[MAX_STRING+1];
}valid, invalid;
void read_file(FILE *file);
void validate(struct data* temp);
int g = 0;
int main(){
char inputfile[100];
FILE *file = fopen("file.txt" , "r");
if (file != NULL){
read_file (file);
}
else{
// Some code here..
}
return 0;
}
void read_file(FILE *file){
struct data* temp = malloc(sizeof(struct data));
char buf[1024];
while(!feof(file)){
fgets(buf, sizeof buf, file))
sscanf(buffer, "%d.%d.%s", &temp->ref, &temp->port, &temp->data);
validate(temp);
g++;
}
}
void validate(struct data* temp){
if((some condition) && (some condition))
{
create_valid(temp);
}
if((some condition) && (some condition))
{
create_invalid(temp);
}
}
Я не уверен в том, как структурировать следующую функцию:
int create_vaild(struct data* temp){
struct data* valid = malloc(sizeof(struct data)); <<<<<<<<< Line that crashes
valid = realloc(valid, g * sizeof(struct data));
valid[g] = *temp;
if (valid[g] == NULL){
//error.
};
printf("\n%i:%i:%s\n", (valid+g)->ref, (valid+g)->port, (valid+g)->data);
return 0;
}
Вы уверены, что это линия, которая вызывает крушение? – Gopi
Покажите минимальный пример, кто знает, что происходит с 'g'. – 2501
См. Также связанный предыдущий вопрос [Объект переменной величины не может быть инициализирован, создавая массив структуры] (http://stackoverflow.com/questions/27478195/variable-sized-object-may-not-be-initialized-creating-structure-array). –