char tab[257][257];
Il range dei caratteri va da 0 a 255 non da 0 a 256. Non so se questo sia l'errore, ma intanto inizierei da qui.