#define RD_ID (1<<0)
#define RD_NAME (1<<1)
#define RD_SEX (1<<2)
#define RD_SCORE (1<<3)
#define RD_ALL (0x0f)//((1<<0) | (1<<1) | (1<<2) | (1<<3))
定义了一个char mode里面有8位 XXXX XXXX
如果XXXX XXXX&(1>>0)的结果是0000 000x //(1>>0)=0000 0001
xxxx xxxx&(1>>1)的结果是0000 00x0
位移几位决定了哪里需要决定,mode执行决定
比flag=0|1,方便,都有两种结果,所以这样使用
int GetInfFromTTY(tagSTUDENT *puser,unsigned char mode)
{
if(puser == NULL){
return -1;
}
if((mode & (1<<0)) > 0){//读取ID
printf("请输入您的学号:");
scanf("%d",&puser->id);
}
if((mode & (1<<1)) > 0){//读取用户名
printf("请输入您的姓名:");
scanf("%s",puser->name);
}
if((mode & (1<<2)) > 0){//读取性别
getchar();
printf("请输入您的性别:");
scanf("%c",&puser->sex);
}
if((mode & (1<<3)) > 0){//读取成绩
printf("请输入您的成绩:");
scanf("%f",&puser->score);
}
return 0;
}