wielokrotne czytanie pliku txt

0

Witam.
Napisałem prosty program odczytujący dane z pliku o podanej nazwie. Dodatkowo zabezpieczam się przed sytuacją, gdy plik nie istnieje - metoda is_open. Tu jednak pojawiają się problemy.
Gdy padam nazwę istniejącego pliku, wszystko jest poprawnie czytane i program normalnie się kończy.
Gdy podaję niepoprawną nazwę pliku, rusza metoda is_open i program prosi i ponowne podanie nazwy pliku. Jednak tym razem, gdy podam poprawną nazwę pliku, program nic nie robi mimo, że w ogóle nie doszło do opuszczenia pierwszej pętli, więc żadne zmienne nie mogły uledz zmianie.

Oto kod całego programu

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

using namespace std;

int main(int argc, char *argv[])
{
    int licznik=0;
    string linie[100];
    
    ifstream wczytaj;
    do{
    char plik[20];
    cout<<"nazwa pliku: ";
    cin.getline(plik, 80);
    cout<<plik<<endl;
    wczytaj.open(plik);
    if(!wczytaj.is_open()){
                          wczytaj.close();
                          }
}while(!wczytaj.is_open());
    while(getline(wczytaj, linie[licznik])){
                            cout<<linie[licznik]<<endl;
                            licznik++;
                            }
    system("PAUSE");
    return EXIT_SUCCESS;
}

Wydaje mi się, że chyba jest coś nie tak z kursorem plikowym i nie wiem, co zrobić

0

Spróbuj taką alternatywną wersje:

#include <cstdlib>
#include <iostream>
#include <fstream>
#include <cstring>
 
using namespace std;
 
int main(int argc, char *argv[])
{
	int licznik=0;
	string linie[100];
	ifstream wczytaj;

	while(true){
		char plik[20];
		cout<<"nazwa pliku: ";
		cin.getline(plik, 80);
		cout<<plik<<endl;
		wczytaj.open(plik);
		if(wczytaj.is_open())
			break;
	}

	while(getline(wczytaj, linie[licznik]))
	{
            cout<<linie[licznik]<<endl;
            licznik++;
	}
	system("PAUSE");
        return EXIT_SUCCESS;
} 

1 użytkowników online, w tym zalogowanych: 0, gości: 1