[Lekcja 33] zadanie domowe
Ostatnio zmodyfikowano 2015-04-02 11:48
rzymcio9 Temat założony przez niniejszego użytkownika |
[Lekcja 33] zadanie domowe » 2015-04-02 11:30:47 Witam, moim problemem jest odczytanie ostatniej pozycji odczytanej przez program przy użyciu .tellg()kiedy pogram wszystkie liczby już wczytał i zostaje mu jedna ostatnia liczba to pokazuje, że pozycja z której pobrał dane to -1... Proszę o pomoc :) #include <iostream> #include <fstream> using namespace std;
int main() { ifstream plik; streampos miejsce_odczytu; plik.open( "dane.txt" ); if( !plik.good() ) { cout << "Plik nie zostal uruchomiony, program zostanie zamkniety"; return 0; } int a; while( !plik.eof() ) { plik >> a; if( plik.fail() ) break; cout << a; miejsce_odczytu = plik.tellg(); cout << " dane zostaly odczytane na pozycji nr : " << miejsce_odczytu << endl; plik.seekg( plik.tellg() + 3 ); } return 0; }
dane w pliku "dane.txt" : 33 3 3 3 3 3 3 4 5 6 78 6666 |
|
pekfos |
» 2015-04-02 11:35:11 To nie miejsce odczytu, tylko miejsce po odczycie. plik.seekg( plik.tellg() + 3 );
|
A to po co? |
|
rzymcio9 Temat założony przez niniejszego użytkownika |
» 2015-04-02 11:48:00 Źle zrozumiałem zadanie :) chciałem co trzecią pozycję odczytywać, nie wiem czemu, zaraz poprawię, a jeżeli chodzi o .tellg() to nie ogarniam tego do końca. Poprawione, zaczyna ładnie od pierwszej pozycji i przeskakuje co trzy, żeby bardziej się połapać w danych zmieniłem zawartość "dane.txt" na taką : 33 1 2 3 4 5 3 4 5 6 78 6666 zadanie chyba wykonane, zamykam #include <iostream> #include <fstream> using namespace std;
int main() { ifstream plik; streampos miejsce_odczytu; plik.open( "dane.txt" ); if( !plik.good() ) { cout << "Plik nie zostal uruchomiony, program zostanie zamkniety"; return 0; } int a; int i = 3; while( !plik.eof() ) { plik >> a; if( plik.fail() ) break; if( i == 3 ) { cout << a; i = 0; miejsce_odczytu = plik.tellg(); cout << " dane zostaly odczytane na pozycji nr : " << miejsce_odczytu << endl; } i++; } return 0; }
|
|
« 1 » |