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 |
您缺少双等号==
- 好吧,那就解决了这个错误,但是现在我得到了一个关于comparison between pointer and integer的警告,我在这条线上加了两个等号:if (tempDay == data[i].meet_days &&。
- @用户1318371试图将字符串与不起作用的整数进行比较。你需要把一个转换成另一个。
- @sethcarnegie所以我假设上面声明的枚举i是字符串?我试过了:if ((strcmp(tempDay,data[i].meet_days)==0)和incompatible type for argument 2 of strcmp
- @用户1318371否,tempDay是由两个char组成的数组。
- @用户1318371枚举不是字符串,而是int,因此在这种情况下,MW相当于0。
- @sethcarnegie答案是什么?