По сути, я пытаюсь привести массив символов к указателю на структуру и распечатать значения в структуре побайтно.Это связано с тем, что какой-то устаревший код, с которым я имею дело, использует макрос для выполнения побитового сдвига и маскирования, чтобы изменить 4 бита внутри целого числа в структуре, и я пытаюсь выяснить, работает ли макрос так, как задумано.Тем не менее, я сжал свою проблему в этом игрушечном примере -
#include <stdio.h>
#include <stdint.h>
int main()
{
struct student
{
int32_t hi;
int8_t test
};
struct student p1 = {20, 20};
for(int i = 0; i < sizeof(p1); i++)
{
printf("%c",((char*)&p1)[i]);
}
return 0;
}
. По какой-то причине, это печатает два символа (которые отображаются в виде прямоугольников с 0014 в них) и ничего больше.Если я изменю цикл for на 0 - 5 (что примерно соответствует ожидаемым значениям цикла for), я получу точно такой же результат.Есть ли способ сделать то, что я хочу (т.е. заставить это распечатать 5 символов)?Я знаю, что некоторые персонажи будут просто пробелами, но я не понимаю, как я не получаю эти пробелы.