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ć