关于C#:从int类型分配类型char [2]时出现“不兼容类型”的编译错误

compile error of "incompatible types when assigning to type char[2] from type int

我有上面提到的编译错误。代码行如下:

1
2
3
4
5
6
if ((strcmp(tempDept, data[1].Dept)==0) && tempCourse == data[i].course){
            if (tempDay = data[i].meet_days &&
                tempTime == data[i].start.hour){  //<---This line
                    printf("this worked");
            }
        }

以下是我的结构声明:

1
2
3
4
5
6
7
8
9
10
11
12
13
typedef enum {MW, TR} days;

typedef struct {
  int hour, min;
} Time;

typedef struct {
  char Dept[5];
  int course, sect;
  days meet_days;
  Time start, end;
  char instr[20];
} sched_record;

下面是我列出的变量:

1
2
3
4
5
6
7
8
9
int switchInput;
int i = 0;
int tempCourse = 0;
char tempDept[5];
char tempDay[2];
int tempTime;
//char tempTime[1];
FILE *filePointer;
sched_record data[MAX_RECORD];

有人能告诉我怎么修这个吗?


1
tempDay = data[i].meet_days

这就产生了一个问题,因为tempDay是长度为2的char数组,而meet_days是枚举days。而在c中,枚举中的常量只是int类型。另一个问题是你不能将int分配给char array本身。也许你想要一个等号==?现在您必须考虑如何将int枚举值转换为char[2]。一种方法是使用sprintf()来实现这一点。但是具体的实现取决于您对枚举常量的解释。


1
if (tempDay = data[i].meet_days

您缺少双等号==