(solo per chiarire) La mia affermazione "il programma funziona" non era un presupposto di saccenza, era per far capire che chiedevo aiuto non per il completamento di cio' che dovevo ottenere con il programma, ma una sua eventuale sistemazione/miglioramento o correzione degli errori

Ringrazio per chi ha risposto e mi appresto a seguire i consigli e sistemare.

Originariamente inviato da MacApp

se la malloc dovesse fallire, il tuo programma produrrebbe un comportamenento indefinito (che nel caso fortunato sarebbe un crash del programma).
Controlla SEMPRE gli eventuali errori restituiti dalle funzioni che utilizzi.
Non ci avevo proprio minimamente pensato.
Dunque, la malloc (a buon fine) mi ritorna un puntatore alla memoria che viene allocata, quindi se fallisce presumo mi ritorni un puntatore nullo. _Se_ non ho detto castronerie, potrei controllare l'eventuale errore cosi', che dite?

codice:
char *buffer = (char *)malloc(MAX_LENGTH*sizeof(char));
if (buffer == NULL) {
  printf("Errore nell'allocazione di memoria.\n");
  exit(EXIT_FAILURE);
}
Originariamente inviato da MItaly
Se l'allocazione dinamica non è strettamente necessaria evitala. In questo caso basta un char buffer[MAX_LENGTH];
La prendo per buona. Mi date pero' una piccola spiegazione? Se ne capisco le motivazioni imparo qualcosa.

Ora, richiamando le due questioni viste ora (possibilita' di fallimento di una malloc ed uso di una "allocazione diretta" (passatemi il termine) al posto di una dinamica (ove non strettamente necessario il contrario), mi viene da chiedermi: e' possibile che fallisca anche un'allocazione del tipo:

codice:
char buffer[MAX_LENGTH];
Siate clementi, i miei dubbi sono portati dal newbie che c'e' in me