Fragen an die Profis (Tastatur Input Verabeitung und SD Log)

Das Char ist dann leer.

Das ist ein missverständlicher Ausdruck, bei dem sich (vermutlich nicht nur mir) die Nackenhaare sträuben.
ein Array von char wird auch gerne string oder c-string genannt, was allerdings nicht mit einem String Objekt verwechselt werden darf.
Ein char* ( Pointer, mit dem Sternchen !) ist die Adresse eines char,
und damit gegebenfalls auch die Anfangsadresse eines char - Arrays, und kann so meist genauso verwendet werden.

Jedenfalls ist in solch einem Text alles nach dem ersten Ende - '\0' -Zeichen undefiniert,
und wird von Funktionen die mit char* arbeiten, nicht mehr verwendet.
Wenn TXTdisp[0] den Wert 0 ( das gleiche wie '\0' ) behält, bleibt das Ding "leer", egal was in TXTdisp[1] und weiteren Bytes steht oder eingetragen wird..

Tip: am besten immer die index-Variable mit setzen, und nicht vergessen, vor einer Verwendung des char* an der richtigen Stelle die Ende-Kennung zu setzen.

const byte TXTLEN=20;  
byte index:
char TXTdisp[TXTLEN+1];  // Platz für 20 Zeichen + Ende-Kennung
...
index = 0;   //  TXTdisp löschen 
TXTdisp[index] = 0;
char c = 'X';  
if (index  < TXTLEN)  TXTdisp[index++] = c;  // Zeichen c in TXTdisp am Ende anfügen
TXTdisp[index] = 0;  // und Endekennung neu setzen