Originariamente inviato da liberlux
Domanda 1 - Perchè nello scanf (interno al while) si usa & per assegnare il valore di input aglli array contenuti nella struct? non sono sempre puntatori al loro primo membro?
scanf("%d", &rubrica.num);
in questo caso ci vuole la & perché rubrica.num è un int

scanf("%s%s%d", &rubrica.nome,&rubrica.cognome,&rubrica.eta);
in questo caso, la & è superflua su rubrica.nome e rubrica.cognome perché sono degli array.
All'interno di una espressione, il solo nome di un array denota già il suo indirizzo. Quindi:

scanf("%s%s%d", rubrica.nome, rubrica.cognome, &rubrica.eta);

Originariamente inviato da liberlux
Domanda 2 - Come faccio a prendere in input anche lo spazio? Mi spiego, l'utente immette un nome del tipo Paolo Antonio, il programma così com'è assegna Paolo a .nome e Antonio a .Cognome.
Non puoi, non con la scanf. I "whitespace" (tab, spazi, ecc...) vengono saltati, fungono da "separatori".
O usi una fgets() per leggere una intera riga, o usi qualcos'altro.