una cosa del genere:

codice:
//blablabla
FILE *fpt;
fpt = fopen("path del mio file");
int i = 0;
char buf [1];
char str [3];

int count = 2;

while(1)
    {
    i++;
    if(fseek(fpt, -i, SEEK_END))
        {
        cout << "Errore! file non valido o con meno di tre caratteri visibili";
      
        return 1;
        }
    fgets(buf, 1, fpt);
    if((buf[0] >= 32 && buf[0] <= 126) || buf [0] == '\n') //nel caso di ascii 128 bit, '\n' è un carattere visibile
        {
        str[count] = buf[0];
        count--;
        }
    if(count == 0)
        break;
    

    }
fclose(fpt);
cout << "ecco i tre ultimi caratteri visibili: "<<str;
//fine programma


//codice non testato ma dovrebbe andare :)