sappa Opublikowano 23 Maja 2005 Zgłoś Opublikowano 23 Maja 2005 (edytowane) Witam. Mam nastepujacy problem. Musze wczytac wierzcholiki z pliku .raw (koejno wpisane wspulrzedne punktow - plik tekstowy) do tablicy. moj problem polega na tym ze musz najpierw odczytac plik aby dowiedziec sie ile jest tam wierzcholkow (3 floaty na wierzcholek ) zeby wiedziec jakisej wiekosci stworzyc tablice na te wierzcholki. zczytuje poprzez pentle ileWierzcholkow=0; float temp =0.0; ifstream strumien(nazwa); if (!strumien) { MessageBox(NULL, "Blad pliku", "Error", MB_OK); } while (!strumien.eof()) { strumien >> temp; strumien >> temp; strumien >> temp; ileWierzcholkow++; }I tu sie pojaiwa problem bo tak ja by przy nastepnym zczytaniu zaczyna mi CHYBA zczytywac od mijsca w ktorym, skonczylo bo gdy wypisuje pozniej ta tablice to cala jest wypelniona takim samym elementem -4.31602e+008 Zczytuje do tablicy nastepujaca petla for (unsigned long int j=0; j<=ileWierzcholkow; j++) { strumien >> tab[j].x; strumien >> tab[j].y; strumien >> tab[j].z; w+=3; //cout << tab[j].x << " "; } Strumin jest zdefiniowany nstepujaco ifstream strumien(nazwa); if (!strumien) { MessageBox(NULL, "Blad pliku", "Error", MB_OK); }Czy to jest tak jak myslew ze czyta juz zza konca pliku czy te smiec sa spowodowane czyms innym ?? Ladnie prosze o pomoc :D Edytowane 23 Maja 2005 przez sappa Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
antrykot111 Opublikowano 23 Maja 2005 Zgłoś Opublikowano 23 Maja 2005 może użyj fopen, fread i fseek. można to łątwo przesunąć na początek pliku fseek(FILE *stream, long offset, int whence); offset może sie równać : SEEK_SET - 0 File beginning SEEK_CUR - 1 Current file pointer position SEEK_END - 2 End-of-file może ci to jakoś pomoże :rolleyes: Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ayem Opublikowano 24 Maja 2005 Zgłoś Opublikowano 24 Maja 2005 po zczytaniu ilosci pozycji, zamknij strumien i otworz go jeszcze raz, powinieenes miec pointer ustawionyna poczatku pliku Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
MeHow Opublikowano 24 Maja 2005 Zgłoś Opublikowano 24 Maja 2005 po prostu musisz otworzyc plik od nowa. Zapewne da sie to zrobic ladniej, ale neistety nie wiem jak :( ... a szukac mi sie nie chce w ksiazkach, bo mam goraczke :( Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
civi Opublikowano 24 Maja 2005 Zgłoś Opublikowano 24 Maja 2005 Ladnie jest uzywac vector<costam> :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Polar Opublikowano 24 Maja 2005 Zgłoś Opublikowano 24 Maja 2005 Wystarczy w odpowiednie miejsce wstawić takie polecenie aby ustawić wskaźnik na początek pliku do czytania ( czyli w twoim przypadku pomiędzy kolejnymi odczytami z tego pliku ) : strumien.seekg(0); a do tego aby sprawdzić gdzie aktualnie znajduje sie wskaźnik odczytu pliku : cout << strumien.tellg(); To jest wersja do pozycjonowania odczytu , do zapisu wystarczy zmienić ostanie litery tych funkcji z 'g' na 'p' Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...