• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

problem z metodą seekg (podstawy)

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
888 wizyt
pytanie zadane 2 kwietnia 2016 w C i C++ przez enigmatycznyclay Bywalec (2,450 p.)
#include <iostream>
#include <fstream>


int main()
{
    std::ifstream plik;
    char znak;
    plik.open("file.txt");
    while(!plik.eof())
    {
        plik>>znak;
        std::cout<<znak;
        plik.seekg(plik.tellg()+2);
    }
    plik.close();
    return 0;
}

zawartość pliku:"qweqweqwe"

Teoretycznie program powinien wyświetlic mi tylko q (i tak jest tyle że zamiast 3 razy wyświetla bez końca).

Wydaje mi się że to właśnie z metody seekg korzystam źle, ale nie wiem

Proszę o pomoc.

2 odpowiedzi

0 głosów
odpowiedź 2 kwietnia 2016 przez draghan VIP (106,230 p.)
wybrane 2 kwietnia 2016 przez enigmatycznyclay
 
Najlepsza
A co chcesz osiągnąć? Zauważ, że nie sprawdzasz, czy znacznik pozycji nie wynosi przypadkiem -1, kiedy osiągniesz eof - a w takim wypadku, dodając do pozycji 2, otrzymasz nieskończony program.
komentarz 2 kwietnia 2016 przez draghan VIP (106,230 p.)
No i pamiętaj, że dopiero po przekroczeniu końca pliku przez znacznik pozycji, metoda istream::eof() zwróci true.
0 głosów
odpowiedź 2 kwietnia 2016 przez niezalogowany
Robisz zły offset, pamiętaj że po wczytaniu pozycja kursora w tekście się zwiększa, a więc poprawny offset to 1, a nie 2. Zwróć też uwagę na to co napisał @draghan
komentarz 2 kwietnia 2016 przez draghan VIP (106,230 p.)
Autor pisze, że powinien otrzymać trzykrotnie 'q', więc mniej-więcej dobrze robi to, co robi. ;D Diabeł tkwi w szczegółach: warunek pętli powinien wyglądać ciut inaczej, no i wypadałoby przez zmianą pozycji znacznika upewnić się, że taka zmiana będzie poprawna. :)

Podobne pytania

0 głosów
1 odpowiedź 1,151 wizyt
pytanie zadane 26 stycznia 2017 w C i C++ przez Grzegorz Lipski Nowicjusz (170 p.)
0 głosów
2 odpowiedzi 814 wizyt
0 głosów
0 odpowiedzi 470 wizyt
pytanie zadane 12 kwietnia 2021 w Java przez napoludniestad.pl Użytkownik (960 p.)

93,444 zapytań

142,436 odpowiedzi

322,698 komentarzy

62,806 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

...