erreur de compilation des “types incompatibles lors de l’atsortingbution au type char à partir du type int

J’ai l’erreur de compilation mentionnée ci-dessus. La ligne de code est la suivante:

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

Voici mes déclarations de struct:

 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; 

Et voici ma liste de variables:

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

Quelqu’un peut-il me dire comment résoudre ce problème?

 tempDay = data[i].meet_days 

Cela crée un problème, car tempDay est un tableau de caractères de longueur 2 et meet_days est enum days . Et dans C, les constantes dans enums ne sont que de type int . Un autre problème que vous ne pouvez pas affecter int au char array lui-même. Peut-être que vous vouliez un signe égal == ? Vous devez maintenant penser à la conversion de la valeur int enum en char[2] . Une méthode consiste à utiliser sprintf() pour y parvenir. Mais la mise en œuvre concrète dépend de votre interprétation des constantes d’énumération.

 if (tempDay = data[i].meet_days 

Il vous manque le signe double égal ==