Poruszanie sie po pliku, problem z zatrzymaniem pętli

0

Cześć, mam problem z warunkiem zatrzymania pętli.
Do napisania mam taki program, Napisz program, który odczytuje co trzeci znak z pliku. Użyj do tego metod poznanych w niniejszym rozdziale. Przetestuj poprawność działania programu na bardzo krótkim pliku tekstowym, wypisując co trzeci odczytany znak na ekranie.
Mój kod:

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    ifstream plik( "Odczyt.txt" );
    if( !plik.good() )
        return 0;
    char znak;
    plik.seekg(2);
    while(plik.good()){
        plik >> znak;
        cout << znak << endl;
        plik.seekg(2,ios::cur);

        if(plik.eof())
            break;
    }

    plik.close();
    return 0;
}

W pliku znajduje się alfabet, bez spacji: abcdefghijklmnoprstuwyz
Z tego co widzę powinno wypisać mi: c f i l o s w, a wypisuje mi to samo tylko na końcu jest 2x w, c f i l o s w w.
Ogólnie jak próbowałem zmieniać warunek w pętli to wychodziły mi różne wyniki np.
while(plik >> znak) albo while( plik.get(znak)) wypisuje mi d h l p u z

Może ktoś mi pomóc z tym warunkiem ? Jak on musi wyglądać zeby nie wypisywało się na końcu 2x 'w' oraz dlaczego kiedy wezmę jeden z dwóch powyższych while'ów dostaje trochę inny wynik ?

0
#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    ifstream plik( "Odczyt.txt" );
    if( !plik.good() )
        return 0;
    char znak;
    plik.seekg(2);
    while(!(plik >> znak).eof()){
        
        cout << znak << endl;
        plik.seekg(2,ios::cur);

    }

    plik.close();
    return 0;
}
0

Działać działa, tylko po co ta zmienna 'n' i przypisanie wartości 32 do zmiennej znak

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