Ehm, scusa
codice:
#include <stdio.h>
#include <string.h>
#define BUFF_LEN 80

void pulisci_buffer() {
	while(getchar() != '\n');
}
void inserimento(char *out, unsigned max_len) {
	char buff[BUFF_LEN];
	while(1) {
		fgets(buff, BUFF_LEN, stdin);
		if((buff[strlen(buff)-1] == '\n') && (strlen(buff) <= (max_len)))
			break;
		if(buff[strlen(buff)-1] != '\n')
			pulisci_buffer();
		printf("Lunghezza massima consentita %u, reinserire: ", (max_len-1));
	}
	buff[strlen(buff)-1] = '\0';
	strcpy(out, buff);
}


int main(int argc, char ** argv) {
	char nome[20];
	inserimento(nome, 20);
	printf("%s\n", nome);
	return 0;
}