Odczyt i zapis binarki

0

Witajcie,
Nie chciałbym przekazywać Wam moich negatywnych emocji:), ale SZLAG JASNY MNIE TRAFIA. Czy ten oto kod czytający dane z binarki w których występują chary o wartościach 0 i 255 zamieni wszystkie wartości na przeciwne? Nie będę Wam sugerował co się dzieje. Próbowałem jeszcze innych sposobów(odczyt bajt po bajcie) i za każdym razem są jakieś cyrki. Miałem nawet sytuację, że po każdym uruchomieniu programu 255 zamieniały się z 0 podczas odczytu. Nie wiem o co biega.

 unsigned char* line = new unsigned char[450];

    for (int y = 0; y<321; y++)
    {
         int pos = ftell(file);
        fread(line, 1, 450, file);
           
         for (int x=0; x<450; x++)
         {
             line[x] = ((int)line[x] == 255) ? (unsigned char)0 : (unsigned char)255;
         }  
         fwrite(line, 1, 450, file);
    } 
0
line[x] = ((int)line[x] == 255) ? (unsigned char)0 : (unsigned char)255;

a nie prościej

line[x] = ~line[x];

i po co te rzutowania, tylko zwiększasz szansę że coś się skopie.

0

No można, ale to nie o to chodzi
Mały tip:
Po usunięciu:

fseek(file, pos, SEEK_SET);
fwrite(line, 1, 450, file); 

Program odczytuje dane poprawnie(wyswietlanie po kazdym odczycie). Jak jest ten fragment w kodzie, lecą same 0.

0

Skoro program ma tylko odczytywać, to po co

fwrite(line, 1, 450, file);

1 użytkowników online, w tym zalogowanych: 0, gości: 1