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

Odczytywanie pliku

Ostatnio zmodyfikowano 2012-08-21 18:58
Autor Wiadomość
rafalw
Temat założony przez niniejszego użytkownika
Odczytywanie pliku
» 2012-08-21 17:04:42
Witam,

Mam lamerski problem (jak zwykle ;p). Otóż, chce napisac program ktory odczyta dane z pliku txt i wyswietli je na ekranie.. Mam taki kod:

C/C++
int main()
{
    string tekst;
   
    fstream plik( "plik.txt" );
    if( plik.is_open() )
    {
        while( !plik.eof() )
        {
            getline( plik, tekst );
            cout << tekst << endl;
        }
       
    } else
         cout << "nie udalo sie otworzyc pliku";
   
    getchar();
}


I nie wiem dlaczego ale za "chiny, ludy" po uruchomieniu programu wyswietla mi sie pozycja else.. Co robie zle?
P-63196
Mrovqa
» 2012-08-21 17:08:26
Nie podajesz drugiego argumentu - trybu otwarcia.
Btw kod ujmij w tagi [cpp][/cpp]
P-63198
OSA_PL
» 2012-08-21 17:08:27
Wrzuć plik tam gdzie masz binarkę i powinno być ok.
P-63199
rafalw
Temat założony przez niniejszego użytkownika
» 2012-08-21 17:12:38
Tzn. O co Ci chodzi dokladnie Mrovqa? ;p

Plik tekstowy jest na 100% w tym samym katalogu co program :/...
P-63200
OSA_PL
» 2012-08-21 17:14:44
A odpalasz samą binarkę czy przez IDE?
P-63201
rafalw
Temat założony przez niniejszego użytkownika
» 2012-08-21 17:16:43
Znalazlem tez w kursie od brata z polibudy warszawskiej taki kod do otwierania pliku:

C/C++
int main( int argc, char * argv[] )
{
   
    // Będziemy wykorzystywali jedną zmienną typu znakowego -> będzie ona naszym 
    // buforem  
    char zn;
   
    // no i jedna zmienna na nazwę pliku 
    string nazwa;
   
    cout << "Program read_1, wyswietlajacy na ekranie zawartosc pliku\n\n";
   
    // Poprosimy użytkownika o podanie nazwy pliku do wyświetlenia  
    cout << "Podaj nazwe pliku : ";
    cin >> nazwa;
   
    // Następnie otworzymy plik do odczytu  
    // Ponieważ nazwa pliku nie może być typu string (wspominaliśmy że nie jest  
    // to typ wbudowany), tylko w celu zachowania zgodności ze starszym C musi  
    // być prostą tablicą znaków, to konieczna jest jawna konwersja z jednego  
    // typu na drugi. Stąd ten dziwny zapis: nazwa.c_str() 
    ifstream plk( nazwa.c_str() );
    // ta dziwnie wyglądająca linijka poniżej jest potrzebna, by podczas odczytu nie  
    // były pomijane białe spacje, czyli odstępy, tabulatory, znaki końca linii 
    // itp...  
    plk.unsetf( ios_base::skipws );
   
    // w celu odczytu danych z pliku wykorzystamy pętlę typu while  
    while( !plk.eof() )
    {
        // Odczyt znaku z pliku  
        plk >> zn;
        // i wydruk na ekranie  
        cout << zn;
    }
   
    // Ważna rzecz - nie zapomnieć o zamknięciu pliku, z którego nie będziemy 
    // już korzystali  
    plk.close();
   
    cout << "\n\nOsiagnieto koniec pliku";
   
    return 0;
};

Ale on zamiast noramlnych liter podaje jakies trojkaty :/.. i to w nieskonczonosc
P-63202
ison
» 2012-08-21 17:17:43
fstream
 zmień na
ifstream
P-63203
rafalw
Temat założony przez niniejszego użytkownika
» 2012-08-21 17:20:02
Yyyy... Uzywam kompilatora dev c++.. Program zapisalem do katalogu na pulpicie i w nim jest umieszczony plik txt.. Nie jestem pewien czy o to chodzi.. Sorki.. Wiem ze jestem strasznym lamerem.. caly czas sie ucze ;p
P-63204
« 1 » 2
  Strona 1 z 2 Następna strona