ここのコードに問題があります。私のコードがすべきことは、ビットフィールドを平日に割り当てることです。たとえば、月曜日は 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を助けてくれてありがとう。