Problem z obsluga plikow
Ostatnio zmodyfikowano 2010-01-23 19:31
ksymis Temat założony przez niniejszego użytkownika |
Problem z obsluga plikow » 2010-01-22 13:48:40 Witam Mam 2 pliki. Z jednego czytam i szukam lancucha. Po jego wystapieniu reszte przepisuje do drugiego pliku. I kolejna rzecza ktorj juz nie moge zrobic jest przepisania spowrotem to co juz mi sie udalo 'wyluskac' do pliku wejsciowego. fstream Wejscie; fstream TempFile; Wejscie.open( "myfile.txt", ios::in ); TempFile.open( "obrobka.txt", ios::out ); ptr = ZnajdzCiag( bufor, & Wejscie ); while( !Wejscie.eof() ) { Wejscie.read( & c, 1 ); cout << c; if( !Wejscie.eof() ) TempFile.write( & c, 1 ); } Wejscie.close(); TempFile.close(); TempFile.open( "obrobka.txt", ios::in ); Wejscie.open( "myfile.txt", ios::out );
Niestety plik myfile.txt juz nie daje sie otworzyc do zapisu. good() zwraca blad, ale caly plik myfile.txt jest zerowany przez program. usuniecie petli while rozwiazuje problem wiec pewnie w niej cos jest. ale nie wiem co. P.S. Co mnie jeszcze zdziwiło: Chcialem sobie potestowac i usunalem while i dziala. Ale po komendzie Wejsci.close(); dalem Wejscie.write("dupa",4); i znowu nie daje sie pliku otwierac. Dlaczego operacja wykonana na rzekomo zamknietym pliku moze blokowac strumien? |
|
malan |
» 2010-01-22 23:21:36 Funkcji read nie używa się do danych binarnych (std::ios::binary) ? |
|
Elaine |
» 2010-01-23 10:11:26 @up: Niekoniecznie, w trybie tekstowym też można jej używać.
@temat: Po zamknięciu pliku trzeba mu wyczyścić flagi błędu - metoda clear. |
|
ksymis Temat założony przez niniejszego użytkownika |
» 2010-01-23 18:07:33 fal. dziekuje. clear pomoglo, ale mam uzywac PRZED czy PO zamknieciu? I dlaczego jeden plik niewyCLEARowany da sie ponownie otworzyc a drugi nie?
Czy rzecz dotyczy konkretnego obiektu czy danego obiektu klasy fstream? |
|
Elaine |
» 2010-01-23 19:31:27 Napisałem wyraźnie - po. Drugiego nie da się otworzyć, bo ma ustawiony eofbit, a pierwszy się da, bo widocznie jest tylko goodbit. |
|
« 1 » |