[C++] Wczytywanie danych z pliku - znak końca pliku.
Ostatnio zmodyfikowano 2013-05-08 21:51
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ę :) 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; }
|
|
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ą. |
|
« 1 » |