Program wczytywanie pliku C++, błąd wczytania podczas uruchomienia programu w konsoli.
Ostatnio zmodyfikowano 2020-06-22 22:21
basler Temat założony przez niniejszego użytkownika |
Program wczytywanie pliku C++, błąd wczytania podczas uruchomienia programu w konsoli. » 2020-06-22 16:38:16 Cześć,
Mam do napisania projekt na zaliczenie, gdzie jednym z jego elementów jest wczytanie pliku tekstowego i wypisanie go na ekranie, kod działa i program uruchamia się ładując plik podczas uruchomienia z CodeBlocksa, jeżeli odpalam go natomiiast w cmd (co jest warunkiem zaliczenia) program nie ładuje pliku i wyświetla info "Błąd wczytywania pliku".
Próbwałem również razem z kodem z kursu C++ od pana M.Zelenta i dzieje się dokładnie to samo. Dlaczego tak się dzieję? Będę mega wdzięczny za każdą pomoc.
Kawałek kodu odpowiedzialny za ładowanie i wyświetlanie pliku.
Void display() { char S = 10000; fstream plik1; plik1.open("plik1.txt", ios::in ); if (plik1.good() == false) { cout << "Blad odczytania pliku!" << endl; exit (0); } while (!plik1.eof()) { plik1.getline(S, 10000); cout << S << endl; } cout << endl; plik1.close(); } |
|
nanoant20 |
» 2020-06-22 18:53:46 Void display() char S = 10000;
while( !plik1.eof() ) { while( plik1.getline( S, 10000 ) ) { cout << S << endl; } }
|
|
pekfos |
» 2020-06-22 22:21:41 Ścieżki względne są względem bieżącego katalogu roboczego, który będzie różny dla różnych kontekstów. Program uruchomiony przez dwuklik będzie miał katalog z exe jako katalog roboczy, a uruchomiony przez cmd będzie miał aktualny katalog z cmd jako roboczy. Jak uruchamiasz przez swoje IDE, to też zwykle z jakimś nietypowym katalogiem roboczym (np. katalog z projektem, zamiast katalogu z plikiem wykonywalnym). Jeśli masz uruchamiać przez cmd, to możesz albo założyć, że bieżący katalog = katalog z exe, albo ręcznie go tak ustawić z użyciem SetCurrentDirectory() i GetModuleFileName(). Najprawdopodobniej chodzi o to pierwsze. Albo użyj ścieżek bezwzględnych, ale to rozwiązanie złe samo w sobie. Skopiujesz program na komputer laboratoryjny i już przestanie działać. |
|
« 1 » |