ITnetwork Flashka zdarma C# týden
Akce! Pouze tento týden sleva až 80 % na kurzy C# .NET. Lze kombinovat s akcí 50 % bodů navíc na prémiový obsah!
Brno? Vypsali jsme pro vás nové termíny školení Základů programování a OOP v Brně!
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
Člen
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
Avatar
petr.dar
Člen
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.