• 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
260 wizyt
pytanie zadane 5 lutego 2018 w C i C++ przez AgaLuk Nowicjusz (210 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 2018 przez j23 VIP (105,820 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 2018 przez AgaLuk Nowicjusz (210 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 2018 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 2018 przez AgaLuk Nowicjusz (210 p.)
Tak, otwiera.
komentarz 5 lutego 2018 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 2018 przez AgaLuk Nowicjusz (210 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 2018 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 2018 przez AgaLuk Nowicjusz (210 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 2018 przez AgaLuk Nowicjusz (210 p.)
Już wszystko rozwikłałam :) Działa jak ta lala :)

Dziękuję jeszcze raz bardzo za pomoc :)

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

Sleep well.

Podobne pytania

–1 głos
4 odpowiedzi 166 wizyt
0 głosów
1 odpowiedź 62 wizyt
pytanie zadane 10 stycznia 2017 w C i C++ przez kroliczysyn Początkujący (400 p.)
0 głosów
3 odpowiedzi 358 wizyt
pytanie zadane 23 października 2017 w C i C++ przez kris6700 Nowicjusz (220 p.)
Porady nie od parady
Wynikowy wygląd pytania, odpowiedzi czy komentarza, różni się od tego zaprezentowanego w edytorze postów. Stosuj więc funkcję Podgląd posta znajdującą się pod edytorem, aby upewnić się, czy na pewno ostateczny rezultat ci odpowiada.Podgląd posta

65,641 zapytań

112,265 odpowiedzi

236,884 komentarzy

46,639 pasjonatów

Przeglądających: 161
Pasjonatów: 7 Gości: 154

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.

...