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
if (tempDay = data[i].meet_days

二重等号がありません==

于 2012-04-30T03:31:22.557 に答える
1
tempDay = data[i].meet_days

tempDayは長さ2のchar配列であり、meet_daysenumであるため、これは問題を引き起こしdaysます。そして、Cでは列挙型の定数はちょうどintタイプです。int自分自身に割り当てることができないもう1つの問題char array。等号が欲しかったのでは==intここで、列挙値をに変換する方法を考える必要がありますchar[2]。1つの方法は、sprintf()それを達成するために使用することです。ただし、具体的な実装は、列挙型定数の解釈によって異なります。

于 2012-04-30T08:39:33.083 に答える