Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Program nie zapisuje wartości do pliku.

Ostatnio zmodyfikowano 2015-12-27 21:37
Autor Wiadomość
Bulduper
Temat założony przez niniejszego użytkownika
Program nie zapisuje wartości do pliku.
» 2015-12-27 20:46:11
C/C++
#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 ) ) // TU CHYBA COŚ SIĘ PSUJE
    {
        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ę.
P-142431
BadBullPL
» 2015-12-27 21:30:59
while( getline( plik, linia ) )
Po tej pętli dodaj:
plik.clear();
P-142436
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.
P-142439
« 1 »
  Strona 1 z 1