Mam taki maly programik:

#include <iostream.h>
#include <fstream.h>
#include <stdio.h>
#include <string.h>


class szyfrowanie{
private:
	char* tekst; //wskaznik do chara

public:
	szyfrowanie(){ //konstruktor
		tekst=new char[255]; // nowa tablica znakowa (string)
	}
	void szyfruj(); // deklaracje funkcji
	void zczytaj();
	void zapisz(char*);
	void podglad();
	void deszyfruj(char*);
};

void szyfrowanie::deszyfruj(char *plik){
FILE *file;

char* klucz=new char[255];
file = fopen(plik, "r");
fread(tekst,sizeof(tekst),1,file);

cout<<"Wpisz klucz do odszyfrowania: ";
	cin>>klucz;
	for(int i=0;i<strlen(tekst);i++){ // petla dla wszystkich liter w tekscie
		tekst[i]=tekst[i]^klucz[i%strlen(klucz)]; //z-xor-owanie kazdej litery z odpowiednim znakiem klucza
	cout<<tekst[i];
	}
	   

cout<<endl;

}

void szyfrowanie::zczytaj(){ // zczytywanie tekstu z pliku
	cout << "Podaj tekst do zaszyfrowania -> ";
	cin >> tekst;

}

void szyfrowanie::zapisz(char *plik){
	FILE *file; // definicja wskaznika do typu FILE
	file = fopen(plik, "w"); //wskazanie wskaznika file do nowego obiektu (otwarty plik w trybie czytania)
	fwrite(tekst, sizeof(tekst), 1, file);
	fclose(file); //zamkniecie pliku
	cout<<"Zapisano tekst do pliku "<<plik<<"\n"; 
}

void szyfrowanie::szyfruj(){ 
	char* klucz=new char[255]; 
	cout<<"Wpisz klucz do szyfrowania: ";
	cin>>klucz; 
	for(int i=0;i<strlen(tekst);i++){ 
		tekst[i]=tekst[i]^klucz[i%strlen(klucz)]; 
	}

}	


void szyfrowanie::podglad(){ // podglad tekstu
	cout<<"\nTEKST ("<<strlen(tekst)<<"):\n-----------\n"<<tekst<<"\n-----------\n\n";
}


void main()
{
	szyfrowanie a;	
	a.deszyfruj("1.txt");
	a.zczytaj();
	a.szyfruj();
	a.zapisz("1.txt");
}



Program sie ladnie kompiluje, ale....
ale niestety przy probie deszyfrowania dobrze mi deszyfruje tylko pierwsze 4 znaki. Czy ktos wie co źle robię?