Ukryte bajty struktury.

0

Cześć szukam sposobu na dostanie się do bajtów które nie są wykorzystane w strukturze (według tresci zadania jest tam ukryta jakas wiadomosc).

struct message_t
{
    char a;
    double b;
    int c;
};

czyli 7 bajtów za zmienną a oraz 4 za c.
Próbowałem to rozwiązać w ten sposób.


memcpy(msg,&(cp+i)->a+1,7);

memcpy(msg,&(cp+i)->c+1,4);


gdzie cp to wskaźnik na strukturę ,msg to wskaźnik na tablicę.
Jednak prowadzący zajęcia odrzucił odpowiedź ze względu na :** "Dangerous pointer arithmetic" **
które wyskoczyło przy okazji analizy statycznej.

0

Zrób unię tej struktury i np. char[24]. Nie znam się zbytnio na C/C++, ale mając unię będziesz mógł "bezpiecznie" wyjąć interesujące Cię znaki z tablicy bez dziwnego żonglowania adresami. Czyste rączki ;)

0

Niestety nie mogę używać unii. Da się tam dostać jakoś przez wskaźnik?

2
struct message_t given;
char *data = (char*)&given; //rzutowanie jest opcjonalne (chyba że piszesz w ANSI C)
for (size_t i = 0; i < sizeof(struct message_t); ++i)
{
    putc(data[i]);
}

0

Nie możesz kopiować całej struktury do tablicy 24 charów?

struct message_t cp;
unsigned char dest[sizeof(struct message t)];
memcpy(dest, &cp, sizeof(struct message_t));
// Zawartość w elementach dest

https://wandbox.org/permlink/Wy36ik4eJKJOkhNC

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