Pliki - wielkość pól przy binarnym zapisie pliku
Ostatnio zmodyfikowano 2013-10-25 18:46
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: 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. |
|
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ć. plikIn.read( & buffer, 1 ); plikOut.write( & buffer, 1 );
|
|
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. |
|
kubawal |
» 2013-10-20 13:13:12 Plik bbb.aaa będzie pusty. |
Czemu? |
|
pekfos |
» 2013-10-20 13:16:04 Bo wypadałoby, żeby bufor, podany do metody read(), istniał ;) |
|
kubawal |
» 2013-10-20 13:17:25 Słusznie, zapisywanie do NULL'a to nie jest zbyt dobry pomysł ;) |
|
pekfos |
» 2013-10-20 13:27:59 Pomijając te błędy, plik bbb.aaa może być większy. |
|
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. |
|
« 1 » 2 3 |