Java týden Body zdarma
Využij podzimních slev a získej od nás až 40 % bodů zdarma! Více zde
Pouze tento týden sleva až 80 % na Java e-learning!
Avatar
Tomáš Vitek:4. února 21:01

Snažím se zapsat hlavičku mého binárního souboru, a všechno funguje dobře, až na jednu proměnnou. Tady je kód zápisu:

// Předchozí proměnné
uint32_t test;
test = 0;
file.write((char*)&test, sizeof(test));
// Následující proměnné

File je zde instance třídy std::ofstream. Všechny předchozí proměnné se zapíšou vpořádku, a stejně tak i všechny následující. Místo této se ale zapíše nějaké náhodné číslo.

Zkusil jsem: Zkoušel jsem kontrolovat čtení souboru, jestli není chyba tam. Při čtení jednoho nezměněného souboru se ale vždycky přečte to stejné číslo, ovšem jakmile vygeneruji pomocí kódu nahoře nový soubor, přečte se odsud nové, jiné náhodné číslo, takže chyba nejspíš bude už někde v zápisu.

 
Odpovědět 4. února 21:01
Avatar
petr.dar
Redaktor
Avatar
petr.dar:5. února 0:32

Takže, potřebuješ zapsat do souboru hodnotu proměnné test. Jen to nejde přes uint32_t ale použil jsem klasické int.
Vidim tam že špatně konvertuješ toto číslo do char, Já bych to napsal takto:

#include <iostream>
#include <fstream>
using namespace std;
int pocet_cislic(int number)
{
    int count = 0;
    while (number != 0) {
        number /= 10;
        count++;
    }
    return count;
}
int main()
{
    ofstream file("t.txt");
    int test;
    test = 523;
    char buffer[pocet_cislic(test)];
    itoa(test,buffer,10);
    file.write(buffer, pocet_cislic(test));
    return 0;
}
 
Nahoru Odpovědět 5. února 0:32
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
petr.dar
Redaktor
Avatar
Odpovídá na petr.dar
petr.dar:5. února 0:37

Teď jsem zjistil, že nula se tam nevypíše ale jakákoliv jiná ano. Kdyžtak tam můžeš dát podmínku if ...

 
Nahoru Odpovědět 5. února 0:37
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.