Skocz do zawartości
sappa

Odczyt Z Pliku Raw Do Tablicy C++

Rekomendowane odpowiedzi

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 przez sappa

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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:

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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'

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...