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;
}