Asignación de memoria

Solo quiero saber cómo asignar mi memoria para que los nombres se almacenen correctamente: el programa le pedirá que agregue un estudiante, y después de agregarlo, puede modificarlo o eliminarlo. En mi código, puedo modificar y editar el mismo estudiante. pero si agrego muchos estudiantes seguidos, no puedo modificar o eliminar el primer estudiante o el segundo estudiante, solo puedo hacerlo con el último estudiante. Así que supongo que mi asignación de memoria es incorrecta. ¿Puedes ayudarme a arreglar eso?

 #include <stdio.h>

#include <math.h>

#include <string.h>

#include <stdlib.h>
#define MAX 10000
  struct programms{
    char namnen[30];
    char mcode[30];
    char responsible[30];
    char email[30];
};
 struct student {
   char personnummer[11];
   char fornamn[10];
    char efternamn[10];
   char gender[7];
   char age[4];
   char email[30]; 
   struct programms *programmdife;  
};
void try1(struct student **personer,int* j)
{         
  for(int i=0; i<*j;i++)
  {
       printf("%s\n",(*personer)[i].personnummer);

  }
}
 
int main()
{ 
    int j=1;
    struct student *personer = (struct student*)malloc(j * sizeof(struct student)); 
  while (1)
    {       
    int option;
    printf("valja mellan foljande,skriv tal \n 1. Add\n 2. Modify\n 3. Delete\n 4. search\n 5. save\n 6. load\n 7.  add programm\n 8. modify programm\n . Exit\n");
    scanf("%d", &option);
    printf("option=%d\n",option);
    switch(option)
    {
    case 1:
    realloctedonplus(&personer,&j);
    fal1(&personer,&j);
    try1(&personer,&j);
    break;
    case 2:
    fal2(&personer,&j);
    break;
    case 3:              
    fal3(&personer,&j);
    break;
        }
}  
 return 0;
}

void realloctedonplus(struct student **personer,int* j)
{
  *j=(*j)+1;
 *personer = realloc(*personer, (*j) * sizeof(struct student));
}
int i;
char kosa[34];
void fal1(struct student **personer,int *j)
 {
     
       printf("skriv ny personnummret\n");
       scanf("%11s", (*personer)[i].personnummer);
       printf("skriv fornamn\n");
       scanf("%20s", (*personer)[i].fornamn);
        printf("skriv ny efternamn\n");
       scanf("%20s", (*personer)[i].efternamn);
       printf("skriv gender\n");
       scanf("%6s", (*personer)[i].gender);
        printf("skriv ny programm\n");
         scanf("%30s", kosa);
       (*personer)[i].programmdife=&kosa;
       printf("skriv age\n");
       scanf("%3s", (*personer)[i].age);
        printf("skriv ny email\n");
       scanf("%30s", (*personer)[i].email);
}
Answer