I'm trying to make a simple program to ask for user input (name and age) using a structure and allocating memory. I start with an array of 2 spaces, however when i try to assign more it overwrite the previous input.
Can someone show me where i'm being wrong?
#include <stdio.h>
#include <stdlib.h>
#include <stdio_ext.h>
typedef struct
{
char nombre[20];
int edad;
}Persona;
int main()
{
int sizeArrayPersonas = 2;
Persona listaPersonas[sizeArrayPersonas];
Persona* pArrayPersona = NULL;
char respuesta = 's';
int i;
pArrayPersona = listaPersonas;
while(respuesta == 's')
{
pArrayPersona = (Persona*)malloc(sizeof(Persona)*sizeArrayPersonas);
for(i=0;i<sizeArrayPersonas;i++)
{
printf("Ingrese nombre: ");
__fpurge(stdin);
fgets((pArrayPersona+i)->nombre,20,stdin);
printf("Ingrese edad: ");
scanf("%d", &(pArrayPersona+i)->edad);
}
printf("Desea ingresar otro usuario? (s o n): ");
__fpurge(stdin);
scanf("%c", &respuesta);
if(respuesta == 's')
{
Persona* pAuxArray;
pAuxArray = (Persona*)realloc(pArrayPersona,sizeof(Persona)*(sizeArrayPersonas+1));
if(pAuxArray != NULL)
{
pArrayPersona = pAuxArray;
sizeArrayPersonas++;
pAuxArray = NULL;
}
}
}
//Mostrar array de estructura
for(i=0;i<sizeArrayPersonas;i++)
{
printf("Nombre: %s Edad: %d \n", (pArrayPersona+i)->nombre, (pArrayPersona+i)->edad);
}
return 0;
}