“的编译错误”;从int类型分配给char[2]类型时不兼容的类型
我有上面提到的编译错误。代码行如下所示:“的编译错误”;从int类型分配给char[2]类型时不兼容的类型,c,sockets,C,Sockets,我有上面提到的编译错误。代码行如下所示: if ((strcmp(tempDept, data[1].Dept)==0) && tempCourse == data[i].course){ if (tempDay = data[i].meet_days && tempTime == data[i].start.hour){ //<---This line pri
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");
}
}
下面是我的变量列表:
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];
有人能告诉我怎么解决这个问题吗
if (tempDay = data[i].meet_days
你错过了双等号==
tempDay = data[i].meet_days
这是一个问题,因为tempDay
是长度为2的字符数组,meet_days
是enumdays
。在C中,枚举中的常量只是int
类型。另一个无法将int
分配给char数组
本身的问题。也许你想要一个等号==
?
现在您必须考虑如何将
int
enum值转换为char[2]
。一种方法是使用sprintf()
来实现这一点。但是具体的实现取决于您对枚举常量的解释。很好地解决了这个错误,但是现在我在添加双等号的行上得到了指针和整数之间比较的警告:if(tempDay==data[I].meet_days&
@user1318371您试图将字符串与一个不起作用的整数进行比较。您需要将一个字符串转换为另一个。@SethCarnegie所以我认为我上面声明的枚举是一个字符串?我确实尝试过:如果((strcmp(tempDay,data[I].meet_days)==0)
并为strcmp的参数2获取了一个不兼容类型
@user1318371否,tempDay
是两个char
s的数组。@user1318371枚举不是字符串,而是int
,因此在本例中MW
相当于0
tempDay = data[i].meet_days