właśnie 10 min temu napisałem sobie szybko prosty koder w C++, który miał za zadanie przyjąć od użytkownika klucz i przemienić wszystkie znaki w pliku o ten klucz (generalnie miał wykonać działanie znak+=klucz), no i wszystko pięknie działa, ale na małych i stworzonych przezemnie plikach. Kiedy chciałem tak zakodować większy plik o rozszerzeniu gif lub inny niż txt, to program albo się wywalił podczas kodowania, albo podczas dekodowania... Generalnie nwm co jest źle, ale stawiam, że to dla tego, że fstream albo nie przyjmuje większych plików, albo pliki te nie są kodowane w ASCII co prowadzi do wywalania się programu (to akurat mało prawdopodobne).
Tutaj zamieszczam kod:
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
using namespace std;
unsigned char klucz;
fstream openFile, saveFile;
string line;
int main(int argc, char * argv[])
{
if(argc!=1)
{
if((string)argv[1]=="coding")
{
klucz = atoi(argv[2]);
openFile.open(argv[3], ios::in);
saveFile.open("coded.ac", ios::out);
if(openFile.good() && saveFile.good())
{
while(getline(openFile, line))
{
for(int a=0; a<=line.length()-1; a++)
{
saveFile<<(char)((char)line[a]+klucz);
}
saveFile<<endl;
}
}
}
if((string)argv[1]=="decoding")
{
klucz = atoi(argv[2]);
saveFile.open(argv[3], ios::out);
openFile.open(argv[4], ios::in);
if(openFile.good() && saveFile.good())
{
while(getline(openFile, line))
{
for(int a=0; a<=line.length()-1; a++)
{
saveFile<<(char)((char)line[a]-klucz);
}
saveFile<<endl;
}
}
}
}
openFile.close();
saveFile.close();
return 0;
}
Proszę, pomóżcie mi znaleźć błąd! :>