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

[C++] Wczytywanie danych z pliku - znak końca pliku.

Ostatnio zmodyfikowano 2013-05-08 21:51
Autor Wiadomość
Krzemo
Temat założony przez niniejszego użytkownika
[C++] Wczytywanie danych z pliku - znak końca pliku.
» 2013-05-08 21:41:34
Mam problem z wczytywaniem danych z pliku. Poniżej zamieszczona jest funkcja wczytująca współrzędne punktów do listy jednokierunkowej. Problem leży w tym, że pętla wczytująca, po wczytaniu ostatnich współrzędnych robi jeszcze jeden obrót i wczytuje puste dane do nowego elementu listy, co poważnie zaburza działanie programu. Może powiecie mi, co jest w tym wczytywaniu nie tak, bo ja niestety już nie wiem... Z góry dziękuję :)

C/C++
List * LoadFromFile( ifstream & wej, ofstream & wyj, List *& tail )
{
    string name;
    List * head, * act;
    cout << "Podaj nazwe pliku" << endl;
    cin >> name;
    wej.open( name.c_str() );
    head = new List;
    act = head;
    wej >> act->a.x >> act->a.y;
    while( !wej.eof() )
    {
        act->next = new List;
        act = act->next;
        wej >> act->a.x >> act->a.y;
    }
    tail = act;
    wej.close();
    act->next = head;
    wyj.open( name.c_str() );
    return head;
}
P-82489
Admixior
» 2013-05-08 21:51:24
Dlatego że bit eof jest ustawiany dopiero wtedy gdy spróbujesz wczytać dane gdy nie istnieją.
Jeśli wczytałeś ostatni znak z pliku to ten znak się wczytał więc jest ok(nie ma eof) a jeśli wczytałeś znak i znak nie istniał wtedy jest ustawiony eof.
więc eof powinieneś po oddczytaniu obydwóch danych sprawdzać(use break;) a pętle dać nieskończoną.
P-82494
« 1 »
  Strona 1 z 1