Piotr Szawdyński napisał:
Jeśli używasz tego samego fstream'a do otwierania różnych plików, musisz przed jego otwarciem wywołać linijkę: plik.flush();
|
A ty zrobiłeś:
cout<<s[i]<<endl; //zmienna wyswietlana w konsoli
ofstream outfile ("szyfr.txt");
outfile<<s[i]<<endl;// s[i] bo tak wyglada koncowy zapis?
outfile.flush();
outfile.close();
}
Outfile.flush() powinieneś postawić przed otwarciem 2 pliku.
Sprawdź czy teraz działa dobrze i daj znać. ;)
Jeden błąd:
cin>>s[i];
Wydje mi się że powinieneś to postawić przed pętlą, bo przecież nie chcemy wpisywać tekstu po jednym znaku.
Jeżeli chcesz wyświeltić jeden znak na jeden obrót pętli, a chyba tak chcesz zrobić to piszesz s[ i ]. Aha i jedna ważna regułka, nazwa tabeli jest jednocześnie wskaźnikiem do jej zerowego elementu. :)
/edit1:
Szczerze to do końca nie rozumiem twojego programu. Ja by zmienił to jakoś na odczyt zaszyfrowanego pliku i zapis pliku zaszyfrowanego. Skutkiem czego utworzyłbym dwie pętle for.
/edit2:
Już rozumiem ten programik zamienia zwykły tekst z pliku Notatki.txt na zaszyfrowany tekst do szyfr.txt. A więc ja bym w ogóle zamienił to:
cin>>s[i];
//na to:
cout<<s[i];
Po za tym przenieś to:
plik.open("szyfr.txt",std::ios::out); //Zapis tekstu zaszyfrowanego
plik<<s[i]<<endl;
przed pętlę for.
A to:
plik.close();
Na sam koniec, a do tego nie zapomnij że tekst jest zaszyfrowany. ;)
Jednak co do szyfrowania tekstu to mam pewien dylemat, ponieważ:
int n=s[i];
char c=n-13;
std::cout<<c;
nigdzie nie operuje na zmiennej s, a to przecież ona jest zawsze zapisywana do pliku. Popraw na:
int n=s[i];
char c=n-13;
s[i] = c;
std::cout<<c;
Pozdrawiam