Funkcje + fstream - problem.
Ostatnio zmodyfikowano 2009-04-26 14:20
malan Temat założony przez niniejszego użytkownika |
Funkcje + fstream - problem. » 2009-04-26 03:10:02 Witam... Mam sobie taką funkcję: void WyswietlRanking( string Menu, fstream & PliK, string Dane ) { clrscr(); Menu = " Ranking "; WyswietlMenu( Menu ); PliK.open( "Ranking.txt", ios::in ); if( PliK.good() ) { for( int i = 5; !PliK.eof(); i++ ) { getline( PliK, Dane ); gotoxy( 1, i ); cout << Dane << endl; } } else { cout << "\n\n[04] - Blad otwarcia pliku ''Ranking.txt''!" << endl; } getch(); return; } Następnie chciałbym zapisać coś do tego samego pliku: Plik2.open( "Ranking.txt", ios::out ); if( Plik2.good() ) { Plik2 << Data << " " << Imie << " wygral: " << GKwoty( NumerPytania ) << " zl" << endl; } else { cout << "\n\n[03] - Blad otwarcia pliku ''Ranking.txt''!" << endl; getch(); return( 0 ); } Problem polega na tym, iż kiedy chcę wyświetlić ranking więcej niż 1 raz wyskakuje błąd [04]... Również kiedy chcę zapisać wyskakuje błąd [03]... i nie mam pojęcia dlaczego... Wiem, że każdy plik powinno się zamknąć ( Plik.close(); ), ale to nie działa. Nie daje żadnego efektu... |
|
DejaVu |
» 2009-04-26 12:13:02 Ja w kodzie nie widzę PliK.close(). Nie wiem czy można otworzyć plik do zapisu, który masz otwarty do odczytu.
/edit: Jeśli wykorzystujesz ten sam fstream do kilkukrotnego uzyskiwania dostępu do pliku to powinieneś dawać przed każdym ponownym otwarciem PliK.clear(). |
|
malan Temat założony przez niniejszego użytkownika |
» 2009-04-26 14:20:35 Plik.clear() - tego akurat nie znałem ;p Poprawiony kod: void WyswietlRanking( string Menu, fstream & DowolnyPlik, string Dane ) { clrscr(); Menu = " Ranking "; WyswietlMenu( Menu ); DowolnyPlik.open( "Ranking.txt", ios::in | ios::out ); if( DowolnyPlik.good() ) { for( int i = 5; !DowolnyPlik.eof(); i++ ) { getline( DowolnyPlik, Dane ); gotoxy( 1, i ); cout << Dane << endl; } } else { cout << "\n\n[04] - Blad otwarcia pliku ''Ranking.txt''!" << endl; } DowolnyPlik.close(); DowolnyPlik.clear(); getch(); } if( PlikOdp[ 0 ] == 84 || PlikOdp[ 0 ] == 116 ) { cout << "Podaj date: "; cin >> Data; Plik2.open( "Ranking.txt", ios::app | ios::out ); if( Plik2.good() ) { Plik2 << Data << " " << Imie << " wygral: " << GKwoty( NumerPytania ) << " zl" << endl; Plik2.close(); } else { cout << "\n\n[03] - Blad otwarcia pliku ''Ranking.txt''!" << endl; getch(); } } else { Plik2.close(); }
Teraz kod działa. Nawet lepiej niż się spodziewałem ;). Dzięki. |
|
« 1 » |