• 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++]

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
682 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 564 wizyt
pytanie zadane 23 stycznia 2017 w C i C++ przez heros22pt Użytkownik (950 p.)
–1 głos
1 odpowiedź 542 wizyt
pytanie zadane 18 listopada 2018 w C i C++ przez krystian1997 Obywatel (1,020 p.)
0 głosów
1 odpowiedź 198 wizyt
pytanie zadane 29 listopada 2016 w JavaScript przez Madar Obywatel (1,560 p.)

93,096 zapytań

142,059 odpowiedzi

321,513 komentarzy

62,441 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...