Program nie zapisuje wartości do pliku.
Ostatnio zmodyfikowano 2015-12-27 21:37
Bulduper Temat założony przez niniejszego użytkownika |
Program nie zapisuje wartości do pliku. » 2015-12-27 20:46:11 #include <iostream> #include <fstream> #include <windows.h> #include <cstdlib> #include <string> using namespace std;
int dzien; int miesiac; int rok; fstream plik;
void dzis() { SYSTEMTIME st; GetLocalTime( & st ); dzien = st.wDay; miesiac = st.wMonth; rok = st.wYear; cout << rok << "-" << miesiac << "-" << dzien; }
void sprawdz() { string linia, last; int nr; while( getline( plik, linia ) ) { last = linia; nr++; } last.resize( 10 ); last.erase( 4, 1 ); last.erase( 6, 1 ); int x = atoi( last.c_str() ); int last_rok = x / 10000; int last_miesiac =( x -( last_rok * 10000 ) ) / 100; int last_dzien = x -( last_rok * 10000 ) -( last_miesiac * 100 ); while( last_miesiac != miesiac ) { switch( last_miesiac ) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: { while( last_dzien < 31 ) { last_dzien++; plik << endl << last_rok << "-"; if( last_miesiac <= 9 ) plik << "0" << last_miesiac << "-"; else plik << last_miesiac << "-"; if( last_dzien <= 9 ) plik << "0" << last_dzien << " "; else plik << last_dzien << " "; } break; } case 4: case 6: case 9: case 11: { while( last_dzien < 30 ) { last_dzien++; plik << endl << last_rok << "-"; if( last_miesiac <= 9 ) plik << "0" << last_miesiac << "-"; else plik << last_miesiac << "-"; if( last_dzien <= 9 ) plik << "0" << last_dzien << " "; else plik << last_dzien << " "; } break; } case 2: { while( last_dzien < 29 ) { last_dzien++; plik << endl << last_rok << "-"; if( last_miesiac <= 9 ) plik << "0" << last_miesiac << "-"; else plik << last_miesiac << "-"; if( last_dzien <= 9 ) plik << "0" << last_dzien << " "; else plik << last_dzien << " "; } break; } } if( last_miesiac != 12 ) { last_miesiac++; last_dzien = 1; } else { last_rok++; last_miesiac = 1; last_dzien = 1; } plik << endl << last_rok << "-"; if( last_miesiac <= 9 ) plik << "0" << last_miesiac << "-"; else plik << last_miesiac << "-"; if( last_dzien <= 9 ) plik << "0" << last_dzien << " "; else plik << last_dzien << " "; } while( last_dzien !=( dzien - 1 ) ) { while( last_dzien <( dzien - 1 ) ) { last_dzien++; plik << endl << last_rok << "-"; if( last_miesiac <= 9 ) plik << "0" << last_miesiac << "-"; else plik << last_miesiac << "-"; if( last_dzien <= 9 ) plik << "0" << last_dzien << "-"; else plik << last_dzien << " "; } } }
int main() { cout << "Dzisiejsza data: "; dzis(); plik.open( "dane.txt", ios::in | ios::out | ios::app ); sprawdz(); plik << endl << rok << "-"; if( miesiac < 10 ) plik << "0" << miesiac << "-"; else plik << miesiac << "-"; if( dzien < 10 ) plik << "0" << dzien << "-"; else plik << dzien << " "; plik.close(); return 0; }
Witajcie! Mam problem. Napisałem program, który zgodnie z moim planem będzie się otwierał raz dziennie ze startem komputera. Ma on zapisywać do pliku dzisiejszą datę. Jeśli stanie się tak, że któregoś dnia kompa (programu) nie uruchomię to ma w momencie następnego uruchomienia nadpisać wszystkie daty po kolei (począwszy od odczytania ostatniej daty). Nie wiem czemu, ale program nie chce zapisywać danych. Zauważyłem, że dzieje się tak najprawdopodobniej po/z powodu linii z while( getline( plik, linia ) ) . Co zrobiłem nie tak? Powiem szczerze, że ten programik (jeśli zadziała) po małym rozbudowaniu będzie dla mnie bardzo praktyczny i motywujący do dalszej pracy ;) Proszę o pomoc i z góry dziękuję. |
|
BadBullPL |
» 2015-12-27 21:30:59 while( getline( plik, linia ) ) |
Po tej pętli dodaj: plik.clear(); |
|
Bulduper Temat założony przez niniejszego użytkownika |
» 2015-12-27 21:37:46 Jejku. Dziękuję bardzo. Działa :D Jestem tylko strasznie ciekawy, dlaczego to zadziałało. Mój mózg tego nie pojmuje. |
|
« 1 » |