Dragonit Temat założony przez niniejszego użytkownika |
Problem z zapisem zmiennych » 2010-01-30 14:56:05 Jak niektorzy wiedza pisze gre o samochodach ale nie zbyt dziala mi tam zapis zmiennych do pliku. Mam pytanie, jaki sposob jest najlepszy do zapisu np. int zwykla_zmienna; int zmienna_tablicowa[ 100 ]; char lancuch1[ 100 ]; char lancuch2[ 100 ][ 25 ];
Uzywalem cos takiego dla zapisu: #include <fstream.h>
char fileName[ 16 ]; ofstream fout( fileName );
fout.write(( char * ) & zwykla_zmienna, sizeof zwykla_zmienna ); fout.write(( char * ) & zmienna_tablicowa, sizeof zmienna_tablicowa ); fout.write(( char * ) & lancuch1, sizeof lancuch1 ); fout.write(( char * ) & lancuch2, sizeof lancuch2 );
fout.close(); A cos takiego dla odczytu: #include <fstream.h>
char fileName[ 16 ]; ifstream fin( fileName );
fin.read(( char * ) & zwykla_zmienna, sizeof zwykla_zmienna ); fin.read(( char * ) & zmienna_tablicowa, sizeof zmienna_tablicowa ); fin.read(( char * ) & lancuch1, sizeof lancuch1 ); fin.read(( char * ) & lancuch2, sizeof lancuch2 );
fin.close(); No i cos nie gra. No i pytanie czy to sie zle zapisuje czy odczytuje? A najdziwniejsze jest to ze raz ten sposob dziela bez zarzutu a raz nie. O co tu chodzi? Moze chodzi o zly zapis zmiennych tablicowych, moze trzeba tak: for( int j = 0; j < 100; j++ ) { fout.write(( char * ) & zwykla_zmienna[ j ], sizeof zwykla_zmienna ); } lub for( int j = 0; j < 100; j++ ) { fout.write(( char * ) & zwykla_zmienna[ j ], sizeof zwykla_zmienna[ j ] ); } Tak samo dla odczytu. /by admin: eh... gdzie Ci moderatorzy poprawiający formatowanie postów... |
|
malan |
» 2010-01-30 16:33:36 sizeof ? Hmm, czy tam nie powinno być strlen ? fout.write(( char * ) & lancuch1, strlen( lancuch1 ) ); |
|
Elaine |
» 2010-01-30 16:55:34 Nie, on chce zapisać tablicę as-is, so sizeof ist gut, aber strlen ist schlecht. |
|
Dragonit Temat założony przez niniejszego użytkownika |
» 2010-02-03 10:25:01 Powie mi chociaz ktos jak zapisywac tablice do pliku? |
|
DejaVu |
» 2010-02-03 16:36:49 int tablica[ 123 ]; plik.write(( char * ) tablica, sizeof tablica ); |
|
Dragonit Temat założony przez niniejszego użytkownika |
» 2010-02-04 14:07:36 Czyli tak jest tez dobrze? fout.write(( char * ) & zmienna_tablicowa, sizeof zmienna_tablicowa );
|
|
Elaine |
» 2010-02-04 14:20:40 Nie. Załóżmy, że zmienna_tablicowa to tablica 100 intów. W takiej sytuacji &zmienna_tablicowa jest typu int (*)[100] - wskaźnik na tablicę, co niekoniecznie jest tym, o co nam chodzi. Trzeba skorzystać z tego, że tablica jest niejawnie konwertowalna do wskaźnika (a niech mi któryś teraz wyskoczy, że tablica jest wskaźnikiem /aka nazwa tablicy jest wskaźnikiem na jej pierwszy element/ - zabiję... Nie jest, o czym już pisałem) - czyli wystarczy samo zmienna_tablicowa (zauważ brak ampresandu). |
|
Dragonit Temat założony przez niniejszego użytkownika |
» 2010-02-05 20:17:16 dzieki za info. moze dlatego ten zapis mi nie wychodzil. |
|
« 1 » |