zapis i odczyt z plików

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?

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;
}
0
ofstream keyWrite(keyName);
keyWrite<<"text";
keyWrite.close();
...
ifstream keyRead(keyName);
0
 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?

0
            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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1