假设我有这种结构:
typedef struct {
char x1 : 1;
char x2 : 1;
char x3 : 1;
char x4 : 1;
char x5 : 1;
char x6 : 1;
char x7 : 1;
char x8 : 1;
unsigned int an_int;
} my_struct;
我想修改由x3
,x4
,x5
,x6
位构成的组,以便在0
和15
之间进行修改,值从stdin
读取(其余值为0)。
我该怎么做?
(例如,int main()
我有my_struct x_struct
,我想要修改x3
,x4
,x5
,x6
它)。
有什么帮助吗?
答案 0 :(得分:0)
#include <assert.h>
#include <stdlib.h>
typedef struct {
char x1 : 1;
char x2 : 1;
char x3 : 1;
char x4 : 1;
char x5 : 1;
char x6 : 1;
char x7 : 1;
char x8 : 1;
unsigned int an_int;
} my_struct;
int main(int argc, const char* argv[])
{
int input_value;
my_struct x_struct;
assert(argc == 2);
input_value = strtol(argv[1], NULL, 10);
assert(0 <= input_value && input_value < 16);
x_struct.x3 = (input_value >> 0) & 0x01;
x_struct.x4 = (input_value >> 1) & 0x01;
x_struct.x5 = (input_value >> 2) & 0x01;
x_struct.x6 = (input_value >> 3) & 0x01;
return 0;
}