salve a tutti io sono nuovo del forum e mi chiamo nicola e il mio nickname e nicone.

io avrei un problema con un programma in c che mi da un errore che non riesco a capire

questo è il programma

#include <stdio.h>
#include <iostream>
#include <malloc.h>
#include <string.h>

typedef struct
{
char Nome[15]; //nome del contatto
char Cognome[15]; //cognome del contatto
char Numeroditelefono [20]; //numero di telefono
char Indirizzopaginaweb [50]; //indirizzo di pagina web
char Indirizzoemail [50]; //indirizzo email
} contatto; //struttura dell'agenda


struct record;//struttura con la variabile record

typedef record * L;//la variabile punta a L

typedef struct record{//struttura della variabile record
contatto a[];
L next;
} record;



void push (L c,contatto elem){
L b;
L k;
int n=0;

b=(L) malloc(sizeof(record));
b->next=c;
strcpy(b->a.Cognome,k);
}



void insert(L c,contatto elem[]){
int s=50;
int d=0;
int n=0;
while ((c!=NULL)&&(!d==0)){
if(elem>c->a) c=c->next;
if(elem<=c->a) d=1;
}
if(d==1)push(c,elem[n]);

for(n=0;n<s;n++){



printf("\nnome \n");
scanf("%s",&a[n].Nome);
strcpy(a[n].Nome,elem[n].Nome);
printf("\n._._._._._._._._._._._._.\n");

printf("\ncognome \n");
scanf("%s",&a[n].Cognome);
strcpy(a[n].Cognome,elem[n].Cognome);
printf("\n._._._._._._._._._._._._.\n");

printf("\nnumero di telefono \n");
scanf("%s",&a[n]Numeroditelefono);
strcpy(a[n]Numeroditelefono,elem[n].Numeroditelefono);
printf("\n._._._._._._._._._._._._.\n");

printf("\nindirizzo pagina web \n");
scanf("%s",&a[n].Indirizzopaginaweb);
strcpy(a[n].Indirizzopaginaweb,elem[n].Indirizzopaginaweb);
printf("\n._._._._._._._._._._._._.\n");

printf("\nindirizzo email \n");
scanf("%s",&a[n].Indirizzoemail);
strcpy(a[n].Indirizzoemail,elem[n].Indirizzoemail);
printf("\n._._._._._._._._._._._._.\n");

printf("\n^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^\n");
}}



void ordina(L c,contatto elem[]){
int n=0;
char f[50];
int s=50;
while(n<s){
if(strcmp(elem[n].Cognome,elem[n+1].Cognome)>0){
//scambia Cognomi
strcpy(f,elem[n].Cognome);
strcpy(elem[n].Cognome, elem[n+1].Cognome);
strcpy(elem[n+1].Cognome, f);

//Scambia Nomi
strcpy(f, elem[n].Nome);
strcpy(elem[n].Nome, elem[n+1].Nome);
strcpy(elem[n+1].Nome, f);

//Scambia numeri di telefono
strcpy(f, elem[n].Numeroditelefono);
strcpy(elem[n].Numeroditelefono, elem[n+1].Numeroditelefono);
strcpy(elem[n+1].Numeroditelefono,f);

//Scambia indirizzo di pagina web
strcpy(f, elem[n].Indirizzopaginaweb);
strcpy(elem[n].Indirizzopaginaweb, elem[n+1].Indirizzopaginaweb);
strcpy(elem[n+1].Indirizzopaginaweb,f);

//Scambia indirizzo email
strcpy(f, elem[n].Indirizzoemail);
strcpy(elem[n].Indirizzoemail, elem[n+1].Indirizzoemail);
strcpy(elem[n+1].Indirizzoemail, f);
}}}



void stampa(L c,contatto elem[]){
int n=0;
int s=50;
for(n=0;s<50;n++){
printf("%s\n%s\n%s\n%s\n%s\n",elem[n].Nome,elem[n].Cognome,elem[n].Numeroditelefono,elem[n].Indirizzopaginaweb,elem[n].Indirizzoemail);
}
}



void leggi(L c,contatto elem[]){
int n=0;
int s=50;
char p[100];
printf("dammi il cognome che stai cercando");
scanf("%s",&p);
for(n=0;n<s;n++){
if(p==elem[n].Cognome){
stampa(c,elem);
}else{
printf("ERRORE: nessun elemento corrisponde a quello che stai cercando");
}}}



void Cancella(L c,contatto elem){

L b=c,tmpPunt2;
while(b!=NULL) {
tmpPunt2=b->next;
free(b);
b=tmpPunt2;
}
free(tmpPunt2);
}



int main (){
L a;
int n=0;
int s=50;
int q=0,Scelta; //scelta del menu
int z=0,scelta;

////////////Menu///////////
do
{
printf("1. Inserisci nuovo contatto \n");
printf("2. Visualizza lista contatti \n");
printf("3. immetti il numero del contatto che stai cercando \n");
printf("4. elimina contatto \n");
printf("5. elimina tutta la rubrica \n");
printf("6. Esci \n");
scanf("%d",&Scelta);
system("CLS");
switch(Scelta)
{
case 1:
insert(c,elem);
Ordina(c,elem);
break;
case 2:
stampa(c,elem);
break;
case 3:
printf("Inserisci il nome del contenuto da cui vuoi leggere: \n");
scanf("%s",elem[n].Cognome);
leggi(c,elem);
break;
case 4:
do
{
printf("1. elimina il primo contatto \n");
printf("2. elimina un contatto qualunque della lista \n");
printf("3. elimina un contatto in coda \n");
printf("4. Esci \n");
scanf("%d",&scelta);
system("CLS");
switch(scelta){
case 1:
printf("1. elimina il primo contatto \n");

break;
case 2:
printf("1. elimina il primo contatto \n");

break;
case 3:
printf("1. elimina il primo contatto \n");

break;
}
system("PAUSE");
system("CLS");
}while(Scelta!=4);
break;
case 5:
printf("1. elimina il primo contatto \n");
Cancella(c,elem);
break;

}
system("PAUSE");
system("CLS");
}while(Scelta!=6);

return 0;
}



l'errore in che non riesco a capire e quello in questa stringa


scanf("%s",&a[n].Nome);

qualcuno mi sa dire perchè mi da errore

grazie in anticipo per le vostre risposte e scusatemi per il disturbo