Ho risolto cosi e sembra funzionare bene.
Ciao
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define nLMAX 10 // numero max di caratteri+2 per il nome (nLMAX 10 =
massimo 8 caratteri)
#define cLMAX 10 // numero max di caratteri+2 per il cognome (cLMAX 10 =
massimo 8 caratteri)
int main(void)
{
typedef struct
{
char nome[nLMAX];
char cognome[cLMAX];
} dati;
dati *impiegato;
int c = 0;
impiegato = malloc(sizeof(dati));
printf("Nome [max %d caratteri: ", nLMAX-2);
fgets(impiegato->nome, nLMAX, stdin);
c = impiegato->nome[strlen(impiegato->nome) - 1];
if(c != '\n')
{
if(c != EOF)
{
if (strlen(impiegato->nome)> nLMAX-2)
{
impiegato->nome[strlen(impiegato->nome) -
1] = 0;
printf("Errore nel nome: sei andato oltre i
%d caratteri\n",nLMAX-2);
}
while((c = getchar()) != '\n');
}
}
else
{
impiegato->nome[strlen(impiegato->nome) - 1] = 0;
}
printf("Nome [max %d caratteri: ", cLMAX-2);
fgets(impiegato->cognome, cLMAX , stdin);
c = impiegato->cognome[strlen(impiegato->cognome) - 1];
if(c != '\n')
{
if(c != EOF)
{
if (strlen(impiegato->cognome)> cLMAX-2)
{
impiegato->cognome[strlen(impiegato->cognome) - 1] = 0;
printf("Errore nel cognome: sei andato
oltre i %d caratteri\n" , cLMAX-2);
}
while((c = getchar()) != '\n');
}
}
else
{
impiegato->cognome[strlen(impiegato->cognome) - 1] = 0;
}