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

question-closed Błąd 0xFF podczas wczytywania z pliku tekstowego [c++]

Object Storage Arubacloud
0 głosów
557 wizyt
pytanie zadane 23 listopada 2015 w C i C++ przez C☺ndzi Stary wyjadacz (12,100 p.)
zamknięte 23 listopada 2015 przez C☺ndzi

Mam do wczytania plik który ma 7550 linijek wyrazów. Zrobiłem tablicę string wyraz[7550], a linijki odczytuję tak:
 

fstream slownik;                                                                                                  
    int i=0;                                                                                                                                       
    string tymczas;

    slownik.open("slownik.txt", ios::in);                                                                                                                   
    if (slownik.good()==false){cout<<"Blad! Nie znaleziono pliku ze slownikiem!";getch(); slownik.close(); return;}                 
    else                                                                                                                                                                
    {
        while ( getline(slownik, wyraz[i]) ) i++;

    }
    slownik.close();  

Program natychmiastowo zamarza i pojawa się "return 255(0xFF)", szukałem w internecie ale nie zlalazłem nic co mogłoby mi pomóc. 

komentarz zamknięcia: Zła wielkość tablicy "wyraz", linijek(wyrazów) jest 70549 :C (a nie 7549)

3 odpowiedzi

+1 głos
odpowiedź 23 listopada 2015 przez hit02 Nałogowiec (33,970 p.)

Wartość zwracana przez program nie da ci wiele informacji poza tym, że program nie działa prawidłowo no chyba, że gdzieś dasz coś innego, niż "return 0;". Na przykład "return 1;". Ta wartość jest dość nieprzewidywalna.smiley

Spróbuj znaleźć za pomocą debuggera (brackpointy), gdzie program kończy swoje działanie, lub ewentualnie w różnych miejscach wypisuj jakieś informacje i sprawdzaj co się wypisze, a co nie. Tylko lepiej takie debug message wypisać na stderr zamiast stdout, bo stdout jest buforowane i w niektórych przypadkach może się nie wyświetlić na ekranie pomimo poprawnego zadziałania programu.

komentarz 23 listopada 2015 przez C☺ndzi Stary wyjadacz (12,100 p.)
No tak, tylko że ten kod działał dla mniejszego pliku (1000 linii), a dla tego (7000) nie. Może problem jest w optymalizacji pobierania danych z pliku?
0 głosów
odpowiedź 23 listopada 2015 przez Pan Wiesław Początkujący (430 p.)
Użyj "ReadFile" (z WinAPI - "open" dla Linux), możesz np. z rozszerzenia c++ (fopen z biblioteki msvcr), ew. CLR (IO::StreamReader z mscorlib), jak to nie pomoże to sprawdź (z tego co widzę masz możliwość takiego roszerzenia):
 
1) Czy dysk nie jest pełny,
 
2) Czy ścieżka jest dostępna (nie tylko do odczytu, ale też i zapisu),
 
3) Dla pewności uruchom komputer ponownie.
 
A jak nic z tych rzeczy nie pomoże format * i reinstalacja systemu.
komentarz 25 listopada 2015 przez event15 Szeryf (93,790 p.)
Informatyk to chyba ostatnia osoba, która powinna doradzać format i reinstalację systemu o.O
0 głosów
odpowiedź 23 listopada 2015 przez C☺ndzi Stary wyjadacz (12,100 p.)
Znalazłem coś dziwnego: jeśli podczas pobierania z pliku, w pętli wpiszę cout<<wyraz[i]<<endl; to program się nie wiesza. Dziwne...

Podobne pytania

0 głosów
0 odpowiedzi 464 wizyt
pytanie zadane 23 stycznia 2017 w C i C++ przez heros22pt Użytkownik (950 p.)
–1 głos
1 odpowiedź 379 wizyt
pytanie zadane 18 listopada 2018 w C i C++ przez krystian1997 Obywatel (1,020 p.)
0 głosów
1 odpowiedź 177 wizyt
pytanie zadane 29 listopada 2016 w JavaScript przez Madar Obywatel (1,560 p.)

92,581 zapytań

141,433 odpowiedzi

319,666 komentarzy

61,966 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!

...