Witam, mam mały problem z moim strasznie prostym, aczkolwiek niedziałającym programikiem :|
Jest to programik do sprawdzania ile razy włączyłem komputer w roku szkolnym (dam go do automatycznego uruchamiania przy starcie pod koniec wakacji ;)).
No więc oto problem: tworzę strumień wyjściowy i wejściowy, następnie wyciągam z pliku liczbę do mojej zmiennej, zwiększam ją o jeden (oj, no inkrementuję ;)) a następnie chciałbym ją znowu włożyć do pliku (nie używam trybu ios::app, czyli że plik się nadpisze nową liczbą). No więc zmienna liczbę z pliku pobiera, ale już jej nie chce z powrotem do tego samego pliku włożyć O_o Na początek do pliku dałem liczbę 10. Następnie ją inkrementuję i na ekranie widać 11. Jak włączam program drugi raz, znowu jest 11, czyli że na początku pobrało 10. Patrzę do pliku (tak żeby się upewnić) a tam oczywiście spokojnie sobie siedzi 10 :|
Oto mój kod:
#include <iostream>
#include <stdio.h>
#include <fstream>
#include <cstdlib>
using namespace std;
int liczbaWlaczen;
fstream plik;
int main()
{
plik.open("licznik.txt",ios::out|ios::in);
if(!plik.good())
{
cout << "!ERROR! Plik nie istnieje.";
getchar();
return 0;
}
plik >> liczbaWlaczen;
liczbaWlaczen++;
plik << liczbaWlaczen;
cout << "Witaj! Od pocz\245tku roku szkolnego w\210\245czy\210e\230 komputer: " << liczbaWlaczen;
getchar();
plik.close();
plik.clear();
return 0;
}
Jedyne co mi zostało w tym programie, to ładnie sformatowane literki i naprawienie tego problemu (no, może kiedyś bym go sobie przerobił do SFML-a, byłoby fajnie ;)), który na pewno jest strasznie prosty, ale ja go nie umię znaleźć, bo niezbyt lubię pracę z plikami, a przynajmniej nie pociągało mnie tak bardzo. Dlatego teraz chcę się trochę w tym poduczyć ;)
Dzięki za odpowiedzi na to proste pytanie ;)