Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“的编译错误”;从int类型分配给char[2]类型时不兼容的类型_C_Sockets - Fatal编程技术网

“的编译错误”;从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
是enum
days
。在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