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ę?