我在Qt上编写了下面的代码,当我在其中输入值时,program.exe停止工作。
struct aim
{
int i : 1;
int j : 1;
};
int main()
{
aim missed;
printf("Enter value of i :: ");
scanf("%u",missed.i);
printf("Enter value of j :: ");
scanf("%u",missed.j);
}
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:2)
您的代码存在一些问题:
%d
说明符中没有任何内容告诉scanf()
函数目标值是位字段(也没有任何其他%
说明符可以执行此操作,请参阅2)。解决方案是scanf()
到临时变量,范围检查接收到的值,然后将其存储在位字段中。
答案 1 :(得分:1)
因为C / C ++标准不允许通过指针访问位域的成员,所以你必须通过scanf指针。