Il problema è quello che hai descritto tu: richiede di inserire una stringa, io inserisco il cognome, ma quando deve restituire i dati, il cognome lo lascia vuoto. Non ho capito esattamente dove inserire i getchar()...
codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define FILE_COMUNI "codicicatastali.txt"
int main(int argc, char *argv[])
{
FILE *fp;
char nome[20],cognome[20],data[8],codice[20],conscogn[20],consnom[20],vocnom[20],voccogn[20],mese[5],giorno[5],anno[5],nome_comune[60],codice_comune[4];
char sesso;
printf("Inserire:\nNome:\nCognome:\nData di nascita in formato GG/MM/AA:\nSesso(m or f):\nComune di nascita:");
gotoxy(6,2);gets(nome);
gotoxy(9,3);gets(cognome);
gotoxy(37,4);gets(data);
gotoxy(15,5);scanf("%c",&sesso); getchar();
gotoxy(19,6);gets(nome_comune);gotoxy(1,7);
printf("Verifica dati inseriti:\n");
printf("Nome:%s\nCognome:%s\nData:%s\nSesso:%c\nComune:%s",nome,cognome,data,sesso,nome_comune);
system("PAUSE");
return 0;
}