lecture de mon fichier d'entrées : problèmes avec les enum et les fonctions
	
	
		Bonjour, je me suis fait une fonction qui, à l'aide de fgets, lit mon fichier d'entrée (input.txt) :
	Code:
	
| 12
 3
 4
 5
 
 |  
KWD1    7
KWD2   YES
KWD3    8
KWD4    0 | 
 Ce que je veux faire, c'est une fonction qui vérifie que les mot-clé ont bien été saisi (je veux m'assurer que l'utilisateur a bien par exemple saisi le mot-clé KWD4. Mais j'ai une contrainte qui est que si l'utilisateur saisi YES à KWD2 alors il doit saisir le mot-clé KWD3. Si KWD2 vaut NO alors il n' a pas besoin de saisir le mot-clé KWD3.
Donc, je me suis fait un tableau keywordOK[] où la composante vaut 1 si le mot-clé a été saisi et 0 sinon.
Voici mon code (bien sûr, dans mon programme j'ai bcp plus de mot-clé...). Ici, j'ai directement donné des valeurs à mon tableau keywordOK pour simplifier le post.
	Code:
	
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 
 |  
#include<stdlib.h>
#include<stdio.h>
 
int main(void)
{
  enum Keyword {KWD1, KWD2, KWD3,KWD4,NB_KWD};
  char const * listkwd[]={"KWD1", "KWD2", "KWD3", "KWD4"};
  int i,err=0;
 
 /* 3 jeux d'essai */
  //int keywordOK[NB_KWD]={1,1,1,1};
  //int keywordOK[NB_KWD]={1,0,1,0};
  int keywordOK[NB_KWD]={1,1,0,0};
 
  /* 
     si keywordOK[i]==0 il y a une erreur, i==KWD1, KWD2,KWD4
     
     si keywordOK[KWD2]==1 alors il faut que keywordOK[KWD3]==1 sinon il y a
     une erreur
   */
 
  for(i=0;i<NB_KWD;++i)
  {
    if(i==KWD3)
    {
      if(keywordOK[KWD2]==1 && keywordOK[KWD3]==0)
      {
        printf("le mot-cle KWD3 doit etre saisi\n");
	err=1;
      }
    }
    else
    {
      if(keywordOK[i]==0)
      {
        printf("le mot-cle %s doit etre saisi\n",listkwd[i]);
	err=1;
      }
    }
  }
 
  if(err==1)
    printf("la saisie des mot-cles est incorrecte\n");
  else
    printf("la saisie des mot-cles est correcte\n");
 
  return 0;
} | 
 J'ai deux questions :
1) j'aimerais faire une fonction CheckKeywords(???) qui fasse la vérification (car ici je ne vous ai présenté qu'une seule "contrainte", mais dans mon "vrai" programme, j'ai une petite vingtaine de mot-clé (température initiale, pression initiale, masse de carburant, température de la paroi du moteur etc...) et une demie-douzaine de "contraintes"). Comment puis-je procédé ? Je n'arrive pas à passer un enum en argument de ma fonction
2) si vous regardez bien mon code, la liste de enum et de listkwd est dans le même ordre. Est-il possible d'éviter d'avoir ces deux variables "redondantes" ?
Merci beaucoup.