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

question-closed bład podczas wczytywania pliku binarnego c++ petla eof()

Object Storage Arubacloud
0 głosów
459 wizyt
pytanie zadane 23 stycznia 2017 w C i C++ przez heros22pt Użytkownik (950 p.)
zamknięte 23 stycznia 2017 przez heros22pt

Witam, mam problem z macierzą ... mam wczytać z pliku binarnego dane - gdzie pierwsze 2 liczby to wysokość macierzy i szerokość macierzy, kolejne to wartości danej macierzy. Udało mi się załączyć ten plik. Program odczytuje wartości poprawnie (wysokość i szerokość jest odczytana), jednakże gdy wchodzę do pętli, wywala mi błąd przy dodawaniu wartości (pusch_back) do vector<vector<int>>macierz ... podczas debagowania program zaczymuje się dopiero w momencie który zaznaczyłem w kodzie podanym niżej:

#include<iostream>
#include<vector>
#include<fstream>

using namespace std;

void wczytaj_macierz()
{
	vector<vector<int>>macierz;
	fstream plik("macierz_A.bin", ios::in | ios::binary);

	char *temp = new char[sizeof(int)];
	plik.read(temp, sizeof(int));
	int *nr1 = (int*)temp;
	int wysokosc = *nr1;

	char *temp2 = new char[sizeof(int)];
	plik.read(temp2, sizeof(int));
	int *nr2 = (int*)temp2;
	int szerokosc = *nr2;


	while (!plik.eof())
	{
		char *temp3 = new char[sizeof(int)];
		plik.read(temp3, sizeof(int));
		int *nr1 = (int*)temp3;
		int wartosc = *nr1;
		int i = 0; int h = 0;
		if(i < szerokosc)
		{
				macierz[h].push_back(wartosc); // <-- TUTAJ PROGRAM ZATRZYMUJE SIĘ
				i++;
		}
		else{
			i = 0; h++;
		}
		
	}
	plik.close();
}
int main()
{
	wczytaj_macierz();

}

dodam jeszcze, że nie wyskakują żadne błędy oprócz tego, że w podanym momencie program zatrzymuje się i wyskakuje błąd "debug assertion filed"

jeśli ktoś wie gdzie leży błąd to będę bardzo wdzięczny. jeśli ktoś chciałby przetestować, mogę dodać plik binarny.

https://drive.google.com/open?id=0B3eIuS5jJHn_X2p3cGM1VGpxWkU

komentarz zamknięcia: Problem rozwiązany, było trzeba użyć opcji macierz.resize(...) przed kożystaniem z vectora
komentarz 23 stycznia 2017 przez Munvik Dyskutant (9,350 p.)
No bo, jeżeli tego nie zrobisz to w vectorze nie ma nic i odwołanie się do któregoś elementu (pamięci, w której nic nie ma) robi crasha.

Poza tym jeżeli byś chciał vector uzupełnić konstruktorem to robi się to () a nie {} z tego co mi wiadomo :D
komentarz 23 stycznia 2017 przez heros22pt Użytkownik (950 p.)
na studiach pokazywano mi, że inicjalizuje się (przynajmniej w stukturach) "{}", widocznie na wektorach to nie działa .. Ale dzięki, ratujesz mi nockę, bo możliwe że dzisiaj nie wpadłbym na to
komentarz 23 stycznia 2017 przez heros22pt Użytkownik (950 p.)
gdybyś dodał to w postaci odpowiedzi, dałbym "najlepsza odpowiedź", ale w komentarzu nie mogę zaznaczyć tej opcji ;D
komentarz 23 stycznia 2017 przez Munvik Dyskutant (9,350 p.)
Loozik, pozdrawiam :)
komentarz 23 stycznia 2017 przez unknown Nałogowiec (39,560 p.)

Poza tym jeżeli byś chciał vector uzupełnić konstruktorem to robi się to () a nie {} z tego co mi wiadomo :D

To mało wiesz.  

Podobne pytania

0 głosów
3 odpowiedzi 551 wizyt
pytanie zadane 23 listopada 2015 w C i C++ przez C☺ndzi Stary wyjadacz (12,100 p.)
–1 głos
1 odpowiedź 367 wizyt
pytanie zadane 18 listopada 2018 w C i C++ przez krystian1997 Obywatel (1,020 p.)
+1 głos
2 odpowiedzi 266 wizyt
pytanie zadane 18 czerwca 2017 w C i C++ przez Wojciech Gola Nowicjusz (130 p.)

92,556 zapytań

141,404 odpowiedzi

319,562 komentarzy

61,942 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...