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

Odczytywanie z pliku tekstowego C++ błąd

0 głosów
141 wizyt
pytanie zadane 5 lutego w C i C++ przez AgaLuk Nowicjusz (190 p.)

Cześć,

Mam problem przy odczytywaniu pliku tekstowego. Znalazłam podobne pytanie, umieściłam tam swoje, ale pozostało bez odpowiedzi, więc ponawiam pytanie tutaj. 

 Pomimo, że wszystko wydaje się być w porządku, tylko w tym jednym programie nie chce się odczytać plik tekstowy. Obojętnie czy w nazwie jest .txt, czy nie ma pojawia mi się "Plik nie istnieje". Jeżeli mam nazwę "quiz", a w kodzie: plik.open("quiz.txt", ios::in ); to wtedy program się zawiesza. 

https://i.imgur.com/m4frxT6.png

Program robię z kursów M. Zelenta. Gdy ściągnęłam jego kod działa bez problemowo, wcześniejsze ćwiczenie również działa. Możliwe, że źle stworzyłam plik, ale nie wiem jak inaczej go stworzyć (może jakieś podpowiedzi? Ja po prostu napisałam w notatniku). Skopiowałam nawet z plików M. Zelenta i wkleiłam tam swoje pytania i dalej nic... Nawet w akcie desperacji zainstalowałam NotepadC++ (Ale to też nic nie dało).  Próbowałam również włączyć i wyłączyć komputer ;)

Używam CodeBlocks, a plik tekstowy jest w folderze ze wszystkimi plikami do programu. 

Dzięki za pomoc :)  


#include <iostream>
#include <fstream>
#include <cstdlib>
#include <algorithm>
#include <string>


using namespace std;

string temat, nick;
string tresc [5];
string odpA[5], odpB[5], odpC[5], odpD[5];
string poprawna [5];
string odpowiedz;
int punkty=0;

int main()
{
    int nr_linii=1;
    string linia;
    int nr_pytania=0;

    fstream plik;
     plik.open("quiz.txt", ios::in );
     if(plik.good()==false)
     {
         cout<<"Plik nie istnieje!";
         exit(0);
    }

    while(getline(plik,linia))
    {
        switch(nr_linii)
        {
            case 1: temat;                  break;
            case 2: nick;                   break;
            case 3: tresc[nr_pytania] = linia;       break;
            case 4: odpA[nr_pytania] = linia;        break;
            case 5: odpB[nr_pytania] = linia;        break;
            case 6: odpC[nr_pytania] = linia;        break;
            case 7: odpD[nr_pytania]= linia;         break;
            case 8: poprawna; linia    ;    break;
        }
        if (nr_linii==8) {nr_linii=2; nr_pytania++;}

        nr_linii++;
    }
    plik.close();

    for (int i=0; i<=4;i++)
    {
        cout<<endl<<tresc[i]<<endl;
        cout<< "A. "<<odpA[1]<<endl;
        cout<< "B. "<<odpB[1]<<endl;
        cout<< "C. "<<odpC[1]<<endl;
        cout<< "D. "<<odpD[1]<<endl;

        cout<< "Twoja odpowiedz: ";
        cin>> odpowiedz;

        transform(odpowiedz.begin(),odpowiedz.end(),odpowiedz.begin(),::tolower);

        if (odpowiedz==poprawna[i])
        {
            cout<<"Dobrze! Zdobywasz punkt!"<< endl;
            punkty++;
           } else cout<< "Zle! Brak punktu! Poprawna odpowiedz " << poprawna[i]<< endl;

    }

    cout<< endl<< "KONIEC QUIZU! Zdobyte punkty: "<< punkty;
    return 0;
}

1 odpowiedź

0 głosów
odpowiedź 5 lutego przez j23 Szeryf (82,240 p.)

a plik tekstowy jest w folderze ze wszystkimi plikami do programu. 

Wrzuć go do folderu z exekiem, ewentualnie zmień ścieżkę w Project options > Build targets > Execution working dir (daj '.', wtedy będzie to katalog projektu)

komentarz 5 lutego przez AgaLuk Nowicjusz (190 p.)
Dziękuję za rady, niestety nadal jest "program quiz.exe przestał działać". Gdy wrzucam plik tekstowy od M.Zelenta to spokojnie wczytuje i działa cały quiz. Ale mój dokument tekstowy nie działa. Nawet po prostu skopiowałam swoje pytania do pliku tekstowego z kursu Zelenta i przestał działać ;/

Jeżeli wrzucam do do folderu z exe to z jak włączam z CodeBloks nie odnajduje pliku, a jak przez .exe to się wiesza  ("program quiz.exe przestał działać".). I odwrotnie. Zmiana ścieżki również nic nie daje.
komentarz 5 lutego przez Beginer Pasjonat (22,150 p.)
Otwórz "Notatnik", utwórz plik "quiz.txt", i wpisz jakąś prostą cyfrę lub tekst. Zobacz czy plik się otwiera.
komentarz 5 lutego przez AgaLuk Nowicjusz (190 p.)
Tak, otwiera.
komentarz 5 lutego przez Beginer Pasjonat (22,150 p.)
Czyli z otwieraniem pliku jest wszystko w porządku.

Jeśli problem, który opisałaś nadal występuje to znaczy, że jest jakiś "chochlik" w samym tekście quiz'u. Żeby go znaleźć, wpisuj kolejne, pojedyncze pytania, czy moduły, i patrz co się dzieje.
komentarz 5 lutego przez AgaLuk Nowicjusz (190 p.)

Zrobiłam od nowa quiz (który jest  pozbawiony sensu) i mi otworzył. Może CodeBlocks nie lubi tematyki psiejindecision? Dziękuję za pomoc w każdym razie :) 

komentarz 5 lutego przez Beginer Pasjonat (22,150 p.)
Dobry żart !  Code Blocks to porządne narzędzie (IDE).

Czasem (choć b.rzadko) w programowaniu zdarzają się takie niewytłumaczalne dziwactwa.

Jeśli chcesz znaleźć ten błąd, postępuj jak zaproponowałem.
komentarz 5 lutego przez AgaLuk Nowicjusz (190 p.)
Ok. Przekleiłam cały tekst z mojego oryginalnego quizu do quizu "bezsensownego" i w końcu odczytał! Pewnie nie ma to znaczenia, ale nie wyświetlał mi się nick i tytuł quizu więc dołożyłam do pętli jeszcze warunek if, żeby się wyświetlało.

Teraz badam o co chodzi, bo cały czas wyświetla odpowiedzi z drugiego pytania (aczkolwiek poprawne są te, które zaznaczyłam)
komentarz 5 lutego przez AgaLuk Nowicjusz (190 p.)
Już wszystko rozwikłałam :) Działa jak ta lala :)

Dziękuję jeszcze raz bardzo za pomoc :)

Pozdrawiam!
komentarz 5 lutego przez Beginer Pasjonat (22,150 p.)
Ok! Bardzo się cieszę.

Sleep well.

Podobne pytania

–1 głos
4 odpowiedzi 155 wizyt
0 głosów
1 odpowiedź 55 wizyt
pytanie zadane 10 stycznia 2017 w C i C++ przez kroliczysyn Początkujący (400 p.)
0 głosów
3 odpowiedzi 252 wizyt
pytanie zadane 23 października 2017 w C i C++ przez kris6700 Nowicjusz (200 p.)
Porady nie od parady
Publikując kody źródłowe korzystaj ze specjalnego bloczku koloryzującego składnię (przycisk z napisem code w edytorze). Nie zapomnij o ustawieniu odpowiedniego języka z rozwijanego menu oraz czytelnym formatowaniu kodu.Przycisk code

57,748 zapytań

102,788 odpowiedzi

212,076 komentarzy

29,694 pasjonatów

Przeglądających: 316
Pasjonatów: 14 Gości: 302

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...