tableau dynamique des structures en C

Je suis en train d'apprendre sur les structures, pointeurs et tableaux dynamiques en C. je ne comprends pas comment créer un tableau dynamique de structures à l'aide de pointeurs. Mon code ne fonctionne pas, et je ne sais pas quel est le problème avec elle. J'ai vu plusieurs exemples de tableaux dynamiques, mais non avec des structures. Toute aide serait appréciée. Veuillez donner une explication, pas seulement des extraits de code que je veux comprendre, non seulement de résoudre ce problème.

#include<stdio.h>
#include<stdlib.h>
#include <string.h>
struct *struct_array;
int i,m,n,p;
struct data
{
char inputA[20];
char inputB[20];    
};
struct data get_data()
{
struct data thisdata;
printf("Please enter input A\n");
scanf("%s", thisdata.inputA);
printf("Please enter input B\n");
scanf("%s", thisdata.inputB);
return thisdata;
}
void Output(struct data struct_array, int n)
{
int index = 0;
for(i = 0; i<n ;i++)
{
printf("%s ", struct_array[i].inputA);
printf("%s ", struct_array[i].inputB);
}   
}
void resizeArray(int n)
{
struct_array = (int*)realloc(n*sizeof(int));
}
void mainMenu()
{
printf("Please select from the following options:\n");
printf("1: Add new students to database\n");
printf("2: Display current student database contents\n");
printf("3: exit the program\n");
scanf("%d", &p);
if(p == 1)
{
printf("Please enter the number of students to register:\n");
scanf("%d", &n);
resizeArray(n);
for(i = n; i<n ;i++)
{
struct_array[i] = get_data();
}
}
else if(p == 2)
{
Output(struct_array, n);
}
else
{
free(struct_array);
exit(0);
}        
}
int main()
{    
struct_array = (int*)realloc(2*sizeof(int));
mainMenu();
}
structure de données *thisdata;
struct data *my_data = (struct data *)malloc(sizeof(struct data) * N); Où N est le nombre d'éléments que vous voulez dans votre tableau, il alloue de la mémoire pour les N éléments de type struct data
Les variables globales sont mauvais. Votre realloc-les appels sont incorrectes, le mieux est struct_array=realloc(struct_array,n*sizeof*struct_array)

OriginalL'auteur cHam | 2012-10-20