Avatar billede backupmand Nybegynder
08. maj 2002 - 15:22 Der er 3 kommentarer og
1 løsning

Skrive binært output til fil



Jeg har en funktion der ser således ud:

void myGame::writeResultFile()
{
HiScore h;
outfile.open("hiscores.txt",ios::binary);
if (!outfile){
    cout << "\n ERROR OPENING FILE \n";
    exit(1);
    }

for (int i=0;i<3;i++)
h.initials[i]=initials[i];
h.guesses=guessCount;
cout << endl;
cout << " h initials : " << h.initials;
cout << " h guesses : " << h.guesses;
cout << "\n sizeof h = " << sizeof(h);
search.seekg(0);
outfile.write(reinterpret_cast<const char*>(&h),sizeof(h));
outfile.close();
}

I linjen outfile.open("hiscores.txt",ios::binary);
åbnes min fil. Jeg vil gerne:
1 ) skrive en short efterfulgt af 2) 3 chars på flg. måde:

7 abc

Det er til en highscore fil, som man nok kan regne ud.
Det jeg bruger til at skrive filen er en private class, der
ser således ud:
class HiScore
{public:short guesses;
char initials[3];};

Når data er puttet ind i, og jeg skriver til filen ser filen
således ud bagefter:

  abc

(et eller andet underligt og så de 3 chars)

Hvor er tallet?
Hvad sker der?

tak!



Avatar billede chries Nybegynder
08. maj 2002 - 15:26 #1
tallet er skrevet ned binært. altså som værdien 7 og ikke tegnet 7 !
Avatar billede chries Nybegynder
08. maj 2002 - 15:27 #2
i en hex editor ville du se et 7 tal.
Avatar billede chries Nybegynder
08. maj 2002 - 15:28 #3
du ville se: 07 00 61 62 63
              7    a  b  c
Avatar billede backupmand Nybegynder
08. maj 2002 - 19:48 #4
Selvfølgelig - der er ingen fortolkning da bitmønstret er en kopi af
hukommelsen til filen! naturally!

Tak alligevel, det gik dog op for mig i mellemtiden.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester