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

Błąd wczytywania pliku

–1 głos
707 wizyt
pytanie zadane 18 listopada 2018 w C i C++ przez krystian1997 Obywatel (1,020 p.)

Witam,

mam pytanie dlaczego porgram nie może wczytac mojego pliku?

Sprawdziłem czy plik znajduje sie w moim folderze z projektem, roszerzenie oraz nazwe.

1
komentarz 18 listopada 2018 przez Arkadiusz Waluk Ekspert (291,270 p.)
Kod na forum wstawiamy jako tekst w przeznaczonym do tego bloczku, na obrazku mało widać i nie można z niego niczego skopiować.
komentarz 18 listopada 2018 przez krystian1997 Obywatel (1,020 p.)

Wysłałem obrazek po to żeby było widać umieszczenie dodatkowych plików żeby sprawdzić czy tam jest wszystko poprawnie.

#include <iostream>
#include "pytanie.h" 
#include <stdio.h>
using namespace std;




int main() 
{
	Pytanie p1;
	p1.nr_pytania = 1;
	p1.wczytaj();
	p1.zadaj();
	p1.sprawdz();

	cout << "Koniec quizu. Punkty: " << p1.punkt;
	return 0;
}
#include <iostream>

using namespace std;

class Pytanie
{
public:
	string tresc;
	string a, b, c, d;
	int nr_pytania;
	string poprawna;
	string odpowiedz;
	int punkt;

	void wczytaj();
	void zadaj();
	void sprawdz();
};
#include <iostream>
#include "pytanie.h"
#include <fstream>
#include <cstdlib>
#include <string>

using namespace std;

void Pytanie::wczytaj()         //operator zasięgu
{
	fstream plik;
	plik.open("quiz.txt", ios::in);

		if (plik.good() == false)
		{
			cout << "Nie udało się otworzyć pliku.";
			exit(0);
		}
	int nr_linii = (nr_pytania - 1) * 6 + 1;
	int aktualny_nr = 1;
	string linia;

	while (getline(plik, linia)) 
	{
		if (aktualny_nr == nr_linii) tresc = linia;
		if (aktualny_nr == nr_linii+1) a = linia;
		if (aktualny_nr == nr_linii+2) b = linia;
		if (aktualny_nr == nr_linii+3) c = linia;
		if (aktualny_nr == nr_linii+4) d = linia;
		if (aktualny_nr == nr_linii+5) poprawna = linia;
		aktualny_nr++;
	}
	plik.close();

}
void Pytanie::zadaj()
{
	cout << endl << tresc << endl;
	cout << a << endl;
	cout << b << endl;
	cout << c << endl;
	cout << d << endl;
	cout << "------------------------------" << endl;
	cout << endl << "Odpowiedz: ";
	cin >> odpowiedz;
}
void Pytanie::sprawdz()
{
	if (odpowiedz == poprawna)
	{
		punkt = 1;
	}
	else punkt = 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 19 listopada 2018 przez Bondrusiek Maniak (61,460 p.)

Witam,

spróbuj podać bezwzględną ścieżkę do tego pliku.

plik.open("quiz.txt", ios::in);
// Pamiętaj aby używać \\ . Zamień na : 
plik.open("C:\\JakisFolder\\quiz.txt", ios::in);

 

komentarz 19 listopada 2018 przez krystian1997 Obywatel (1,020 p.)
Ogólnie nie działa.Problem jest z wczytaniem pliku pytanie.h
komentarz 20 listopada 2018 przez Bondrusiek Maniak (61,460 p.)

Spróbuj wszystko wrzucić do jednego pliku main.cpp. Jak zadziała to znaczy że masz problem z podłączeniem plików do projektu. U mnie plik wczytał się prawidłowo.

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

using namespace std;

class Pytanie
{
public:
    string tresc;
    string a, b, c, d;
    int nr_pytania;
    string poprawna;
    string odpowiedz;
    int punkt;

    void wczytaj();
    void zadaj();
    void sprawdz();
};

void Pytanie::wczytaj()         //operator zasięgu
{
    fstream plik;
    plik.open("quiz.txt", ios::in);

        if (plik.good() == false)
        {
            cout << "Nie udało się otworzyć pliku.";
            exit(0);
        }
    int nr_linii = (nr_pytania - 1) * 6 + 1;
    int aktualny_nr = 1;
    string linia;

    while (getline(plik, linia))
    {
        if (aktualny_nr == nr_linii) tresc = linia;
        if (aktualny_nr == nr_linii+1) a = linia;
        if (aktualny_nr == nr_linii+2) b = linia;
        if (aktualny_nr == nr_linii+3) c = linia;
        if (aktualny_nr == nr_linii+4) d = linia;
        if (aktualny_nr == nr_linii+5) poprawna = linia;
        aktualny_nr++;
    }
    plik.close();

}
void Pytanie::zadaj()
{
    cout << endl << tresc << endl;
    cout << a << endl;
    cout << b << endl;
    cout << c << endl;
    cout << d << endl;
    cout << "------------------------------" << endl;
    cout << endl << "Odpowiedz: ";
    cin >> odpowiedz;
}
void Pytanie::sprawdz()
{
    if (odpowiedz == poprawna)
    {
        punkt = 1;
    }
    else punkt = 0;
}

int main(int argc,char* argv[]) {

    Pytanie p1;
    p1.nr_pytania = 1;
    p1.wczytaj();
    p1.zadaj();
    p1.sprawdz();

    cout << "Koniec quizu. Punkty: " << p1.punkt;

    return 0;
}

 

komentarz 20 listopada 2018 przez krystian1997 Obywatel (1,020 p.)
"Nie udało sie uruchomic pliku."

Podobne pytania

0 głosów
3 odpowiedzi 862 wizyt
pytanie zadane 23 listopada 2015 w C i C++ przez C☺ndzi Stary wyjadacz (12,100 p.)
0 głosów
0 odpowiedzi 822 wizyt
pytanie zadane 23 stycznia 2017 w C i C++ przez heros22pt Użytkownik (950 p.)
+1 głos
3 odpowiedzi 1,011 wizyt

93,632 zapytań

142,558 odpowiedzi

323,058 komentarzy

63,141 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2900p. - dia-Chann
  2. 2870p. - DziarnowskiJ
  3. 2827p. - Łukasz Piwowar
  4. 2783p. - raydeal
  5. 2758p. - Adrian Wieprzkowicz
  6. 2713p. - rucin93
  7. 2579p. - Łukasz Eckert
  8. 2523p. - Maurycy W
  9. 2459p. - CC PL
  10. 2082p. - Michal Drewniak
  11. 1885p. - robwarsz
  12. 1851p. - Mariusz Fornal
  13. 1811p. - rafalszastok
  14. 1600p. - Rafał Trójniak
  15. 1588p. - Tomasz Bielak
Szczegóły i pełne wyniki

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

Kursy INF.02 i INF.03
...