Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Program wczytywanie pliku C++, błąd wczytania podczas uruchomienia programu w konsoli.

Ostatnio zmodyfikowano 2020-06-22 22:21
Autor Wiadomość
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();
}
P-177187
nanoant20
» 2020-06-22 18:53:46
C/C++
Void display() //z malej litery void
char S = 10000; //powinno byc char S[10000];

//mozna by i tak
while( !plik1.eof() )
{
    while( plik1.getline( S, 10000 ) ) {
        cout << S << endl;
    }
}
 
P-177188
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ć.
P-177191
« 1 »
  Strona 1 z 1