【发布时间】:2014-06-30 00:47:52
【问题描述】:
我对这里的这段代码有疑问。我的代码应该做的是将位域分配给工作日。例如,星期一为 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。
【问题讨论】:
-
您需要更多时间学习 C 语言和指针。
-
看看你是如何定义 wday 的。它在哪里分配?这应该可以帮助您成功编译。
-
你需要看看Pointers。这是一个老歌,但一个非常彻底的好东西。 (还有一个.pdf)
标签: c string-literals char-pointer