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

Problem z obsluga plikow

Ostatnio zmodyfikowano 2010-01-23 19:31
Autor Wiadomość
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.

C/C++
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?
P-13205
malan
» 2010-01-22 23:21:36
Funkcji read nie używa się do danych binarnych (std::ios::binary) ?
P-13229
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.
P-13235
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?
P-13247
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.
P-13251
« 1 »
  Strona 1 z 1