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 »  |