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, botów: 0