我在这里的这段代码有问题。我的代码应该做的是将位域分配给工作日。例如,星期一为 0x00,星期二为 0x01,依此类推。这是我的代码:
#include<stdio.h>
typedef struct
{
unsigned int week:3;
unsigned int month:4;
}datum;
void date(datum *d, char wday[])
{
switch(d->week)
{
case 0x00:
*wday = "Monday";
break;
case 0x01:
*wday = "Tuesday";
break;
default:
printf("Unknown option: %i\n", d->week);
}
}
int main()
{
char wday[]="";
datum now = {0x01, 0x05};
date(&now,&wday);
printf("It's %s\n", wday);
return 0;
}
在这一点上,我的代码在我运行它时(如果我至少可以编译它)应该做的是显示:
是星期一
不幸的是,它要么无法编译,要么当我使用它显示的指针进行更改时,例如“It's -88”。我认为问题在于指向 char wday 的 char 指针。但我不知道如何让我的代码工作。
非常感谢您帮助 C-Rookie。