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

Pliki - wielkość pól przy binarnym zapisie pliku

Ostatnio zmodyfikowano 2013-10-25 18:46
Autor Wiadomość
RazzorFlame
Temat założony przez niniejszego użytkownika
Pliki - wielkość pól przy binarnym zapisie pliku
» 2013-10-20 11:59:06
Witam. Temat ten jest bardziej pytaniem niż problemem.
Załóżmy że pewien format pliku ma strukture:
Typ pliku - 2 bajty
Szerokosc - 2 bajty
Wysokosc  - 2 bajty
Tablica danych: rozmiar = Szerokosc*Wysokosc, wielkosc pojedynczej jednostki - 4 bajty
I teraz moje pytanie. Czy odczytując i zapisując takowym kodem:
C/C++
fstream plikIn( "aaa.bbb", ios::binary | ios::in );
fstream plikOut( "bbb.aaa", ios::binary | ios::out );
int buffer = 0;
while( !plikIn.eof() )
{
    plikIn.read(( char * ) & buffer, sizeof( int ) );
    plikOut.write(( char * ) & buffer, sizeof( int ) );
}
plik bbb.aaa będzie inny niż aaa.bbb? Pytanie jest stad że gdyby napisać packer danych to nie można by było znać struktury każdego pliku.
P-94102
kubawal
» 2013-10-20 12:49:57
Lepiej jest nieć bufor typu char albo jeszcze lepiej typu o wiadomej wielkości 1 bajta. Wtedy nie trzeba rzutować.
C/C++
plikIn.read( & buffer, 1 );
plikOut.write( & buffer, 1 );
P-94104
pekfos
» 2013-10-20 13:02:34
Pytanie jest stad że gdyby napisać packer danych to nie można by było znać struktury każdego pliku.
A po co znać każdy możliwy plik?

plik bbb.aaa będzie inny niż aaa.bbb?
Plik bbb.aaa będzie pusty.
P-94106
kubawal
» 2013-10-20 13:13:12
Plik bbb.aaa będzie pusty.
Czemu?
P-94107
pekfos
» 2013-10-20 13:16:04
Bo wypadałoby, żeby bufor, podany do metody read(), istniał ;)
P-94108
kubawal
» 2013-10-20 13:17:25
Słusznie, zapisywanie do NULL'a to nie jest zbyt dobry pomysł ;)
P-94109
pekfos
» 2013-10-20 13:27:59
Pomijając te błędy, plik bbb.aaa może być większy.
P-94110
RazzorFlame
Temat założony przez niniejszego użytkownika
» 2013-10-20 20:04:34
Kod był pisany z palca wiec bledy moga byc i sa. Czyli ze gdyby uzyc 1 bajtowy bufor plik aaa.bbb bedzie taki sam jak bbb.aaa?

Edit:
A co do bledu, to kod wzorowalem na kodzie mapy z poprzedniego projektu i zapomnialem usunac wskazniki a raczej operatory * bo te zmienne byly w kodzie dynamicznymi tablicami. Kod poprawie.
P-94153
« 1 » 2 3
  Strona 1 z 3 Następna strona