Non riesco a risolvere gli errori di questo programma. purtroppo le mie conoscienze sono un pò scarse. se qualcuno di voi mi può aiutare gli sarei molto grato.
in modo più specifico il programma mi da errori sul passaggio dei valori alle funzioni. grazie
#include<stdio.h>
#include<string.h>
void aggiungi (struct rubrica a[]);
int ricerca (char r,struct rubrica a[]);
void modifica (char r,struct rubrica a[]);
void elimina (char r,struct rubrica a[]);
struct rubrica
{
char nome[20];
char cognome[20];
char numero[20];
}a[100];
int i,j,d,d2,x,n=0,s;
char ac[20],pno[20],an[20],r[20];
main()
{
do{
printf("MENU\n\n");
printf("1-Aggiungi nuova sheda\n");
printf("2-Cerca scheda\n");
printf("3-Modifica scheda\n");
printf("4-Elimana scheda\n");
printf("5-Esci\n");
printf("\nSelezionare l'operazione desiderata\n");
scanf("%d",&d);
if(d==1)
{
aggiungi (rubrica a[n]);
}
if(d==2)
{
printf("Inserire cognome da ricercare\n");
scanf("%s",&r);
s=ricerca(r);
printf("Numero:%s\n",a[s].numero);
}
if(d==3)
{
printf("Inserire cognome da modificare\n");
scanf("%s",&r);
modifica (r);
}
if(d==4)
{
printf("Inserire il cognome della scheda da eliminare\n");
scanf("%s",&r);
elimina (r);
}
}while(d!=5);
getchar();
getchar();
}
void aggiungi ()
{
printf("Inserire nome\n");
scanf("%s",&a[n].nome);
printf("Inserire cognome\n");
scanf("%s",&a[n].cognome);
printf("Inserire numero\n");
scanf("%s",&a[n].numero);
for(i=0;i<n-1;i++)
{
for(j=0;j<n;j++)
{
if(strcmp(a[i].cognome,a[j].cognome)<0)
{
strcpy(a[i].cognome,ac);
strcpy(a[j].cognome,a[i].cognome);
strcpy(ac,a[j].cognome);
strcpy(a[i].nome,pno);
strcpy(a[j].nome,a[i].nome);
strcpy(pno,a[j].cognome);
strcpy(a[i].numero,an);
strcpy(a[j].numero,a[i].numero);
strcpy(an,a[j].numero);
}
}
}
n++;
}
int ricerca (char r)
{
for(i=0;i<n;i++)
{
x=strcmp(r,a[i].cognome);
if(x==0)
{
s=i;
}
}
return s;
}
void modifica (char r)
{
for(i=0;i<n || x!=0;i++)
{
x=strcmp(r,a[i].cognome);
if(x==0)
{
printf("Cosa vuoi modificare?\n");
printf("1-Cognome\n");
printf("2-Nome\n");
printf("3-Numero\n");
printf("\nEsprimere la decisione\n");
scanf("%d",&d2);
if(d2==1)
{
printf("Inserire nuovo cognome\n");
scanf("%s",&a[i].cognome);
for(i=0;i<n-1;i++)
{
for(j=0;j<n;j++)
{
if(strcmp (a[i].cognome,a[j].cognome)<0)
{
strcpy(a[i].cognome,ac);
strcpy(a[j].cognome,a[i].cognome);
strcpy(ac,a[j].cognome);
strcpy(a[i].nome,pno);
strcpy(a[j].nome,a[i].nome);
strcpy(pno,a[j].cognome);
strcpy(a[i].numero,an);
strcpy(a[j].numero,a[i].numero);
strcpy(an,a[j].numero);
}
}
}
}
if(d2==2)
{
printf("Inserire nuovo nome\n");
scanf("%s",&a[i].nome);
}
if(d2==3)
{
printf("Inserire nuovo numero\n");
scanf("%s",&a[i].numero);
}
}
}
}
void elimina (char r)
{
for(i=0;i<n;i++)
{
x=strcmp(r,a[i].cognome);
if(x==0)
{
for(j=i;j<n;j++)
{
strcpy(a[j].cognome,ac);
strcpy(a[j+1].cognome,a[j].cognome);
strcpy(ac,a[j+1].cognome);
strcpy(a[j].nome,pno);
strcpy(a[j+1].nome,a[j].nome);
strcpy(pno,a[j+1].cognome);
strcpy(a[j].numero,an);
strcpy(a[j+1].numero,a[j].numero);
strcpy(an,a[j+1].numero);
}
}
}
}