guardate sto programma
Codice:
#include <stdio.h>
#include <stdlib.h>
struct user
{
char id[8],pw[8];
int pc;
};
void menu();
void leggi(struct user *Temp);
void inserisci(struct user **tab,struct user Temp,int *pn);
void elimina(struct user **tab,int *pn);
int main ()
{
struct user *tab[5],Temp;
int scelta,i,pc,num[8],n=0;
for (i=0;i<5;i++)
{num[i]=0; tab[i]=NULL;}
do{
menu();
scanf("%d",&scelta);
switch(scelta) {
case 1:leggi(&Temp);
inserisci(&tab[Temp.pc],Temp,&num[Temp.pc]);
break;
case 2:printf("Indicare la postazione");
scanf("%d",&pc);
if(num[pc]>0)
elimina(&tab[pc],&num[pc]);
else
printf("Non ci sono utenti su quel PC");
break;
default:;}
}while(scelta!=0);
for(i=0;i<5;i++)
free(tab[i]);
}
void menu()
{
printf("1-Inserire elemento\n2-Elimina\n--------->");
}
void leggi(struct user *Temp)
{
printf("Registrazione nuovo utente:\nUsername(Massimo 7 caratteri):");
scanf("%s",Temp->id);
printf("Password(Massimo 7 caratteri):");
scanf("%s",Temp->pw);
printf("Postazione numero(da 1 a 8):");
scanf("%d",Temp->pc);
}
void inserisci(struct user **tab,struct user Temp,int *pn)
{
struct user *V;
V=realloc(*tab,sizeof(struct user)*((*pn)++));
if(V==NULL)
{
printf("Errore di allocazione");
return;}
(*tab)=V;
(*tab)[*pn]=Temp;
(*pn)++;
}
void elimina(struct user **tab,int *pn)
{
printf("User:%s\n",(*tab)[*pn-1].id);
printf("Password:%s\n",(*tab)[*pn-1].pw);
(*pn)--;
*tab=realloc(*tab,sizeof(struct user)*(*pn));}
Innanzitutto mi da un warning riguardante la funzione menu (dice che manca il prototipo, poi durante l'esecuzione se inserisco un nuovo elemento il programma mi da un errore (exception.....segment violation address ......)
Penso che ci sia qualcosa che non va nella funzione inserisci ma non so cosa, potete darmi una mano?