zapis i odczyt z plików

zapis i odczyt z plików
4M
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 30
0

Cześć, mam na zaliczenie program, który zaszyfruje wiadomość. Moje pytanie jest takie co zrobić, aby plik klucz był tworzony automatycznie przez program, bo aktualnie musi już taki istnieć by to działało, czy można w inny sposób zapisać do pliku b ? Bo, gdy robię klucz << 'A' + x to zapisują mi się liczby zamiast liter i czy funkcja void dobrze wygląda?

Kopiuj
void szyfruj(fstream &klucz, string &tab)
{
    int wielkosc_znaku;
    char a,b;

    for(int i = 0; i < tab.size(); i++)
    {
        //ustalenie wielkosci litery - funkcja sprawdz zwraca (0, gdy litera jest mała / 1, gdy duża / 2 gdy nie jest literą)
        wielkosc_znaku = sprawdz(tab[i]);

        if(wielkosc_znaku < 2) //Wykonaj, jeśli znak jest literą - szyfruje tylko znaki będące literami
        {
            if(wielkosc_znaku == 0) a = 'a';
            else a = 'A';
            
            int x = los();
            
            tab[i] = ( ( (tab[i]-a) + x ) % 26) + a;
            b = 'A' + x;
            klucz << b;
        }
    } 
}

int main()
{
      fstream klucz;

      klucz.open(nazwa_klucza, ios::out | ios::in);
      ...
      klucz.close();



return 0;
}
_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
ofstream keyWrite(keyName);
keyWrite<<"text";
keyWrite.close();
...
ifstream keyRead(keyName);
4M
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 30
0
Kopiuj
 cin >> odpowiedz;

        szyfr.open(zapis, ios::out);

        switch(odpowiedz)
        {
            case 1: //otworzenie pliku do nadpisania klucza
            ofstream keyWrite(nazwa_klucza);

            while(getline(plik,wiersz))
            {
                szyfr << szyfruj(keyWrite,wiersz) + "\n";
            }

            keyWrite.close();
            break;

            case 2:
            ifstream keyRead(nazwa_klucza);
            while(getline(plik,wiersz))
            {
                deszyfruj(keyRead, wiersz);
                szyfr << wiersz + "\n";
            }
            keyRead.close();

transfer of control bypasses initialization of: -- variable "keyWrite"

Jak mam to zrobić, bo niezbyt rozumiem czemu to nie działa?

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
            for(ofstream key(nazwa_klucza);getline(plik,wiersz);) szyfr<<szyfruj(key,wiersz)<<endl;

Plik sam się zamknie po forze.
I nie trzeba martwić się o zmienne w case
Oraz nazwę key możesz użyć w następnym forze niżej.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.