Primero que nada, no repitas los mensajes en varios foros, va en contra de las reglas.
Tu problema esta en que usas muy seguido:
lcd_gotoxy(1,1);
Si vos "buscas" una letra, la escribis con el printf, y repetis lo mismo vas a verlo como vos queres.
Pero al ejecutarse nuevamente esa instruccion, le decis que vuelva a escribir en la primera posicion. Esa funcion (lcd_gotoxy) mueve el cursor del LCD desde donde va a empezar a escribir.
Vos le decis, posicionate en la primera fila, primera columna, escribis el valor, si escribis otro valor, lo va a realizar en la segunda columna.
Pero nuevamente le decis que se posicione en la primer columna, y cuando escribis, terminas sobreescribiendo el valor que tenias.