0

我有上面提到的编译错误。代码行是这样的:

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");
            }
        }

这是我的结构声明:

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;

这是我的变量列表:

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];

有人可以告诉我如何解决这个问题吗?

4

2 回答 2

1
tempDay = data[i].meet_days

这引起了一个问题,因为tempDaychar 数组的长度为 2 并且meet_days是 enum days。在 C 中,枚举中的常量只是int类型。另一个你不能分配intchar array它自己的问题。也许你想要一个等号==?现在您必须考虑如何将int枚举值转换为char[2]. 一种方法是使用sprintf()来实现这一点。但具体实现取决于您对枚举常量的解释。

于 2012-04-30T08:39:33.083 回答
1
if (tempDay = data[i].meet_days

您缺少双等号 ==

于 2012-04-30T03:31:22.557 回答