Variable locale non référencée ?

Bonjour,

Voila je suis sur un projet de recherche dichotomique!

J'ai 3 erreurs à corriger dans mon programme!
Par exemple celle ci:

Avertissement 1 warning C4101: 'mot_texte' : variable locale non référencée

QU'est ce que ca veut dire "variable locale non référencée" ?

C'est une question complement absurde je le sais mais je suis incapable de corriger ces erreurs :o(
Configuration: Windows XP
Opera 9.50

5 réponses

  1. Il ne s'agit pas d'une erreur mais d'un warning: le compilateur te me en garde contre quelque chose qui lui semble suspect mais qui n'empêche pas la compilation.

    "variable locale non référencée", ça veut dire que tu as déclaré une variable mais que tu ne l'utilises pas par la suite. En occurrence, tu déclares un tableau de 20 caractères appelé mon_texte au début de ton main et tu n'en fais rien. Pour corriger ça, supprime simplement la ligne:
    char mot_texte[LONGMOT]; //mot lu dans le fichier text
    1. oups oui pardon ^^

      en C !!

      et je travaille sous visual studio 2005 !!

      voila !

      :o)
      1. Modérateur
        Tu l'a déclaaré dans ta fonction ton mot_texte?
        Genre char *mot_texte; par exemple.
    2. oui!

      voici mon code ça peut aider ^^

      #include<stdio.h>
      #include<string.h>
      #include<ctype.h>
      #include<stdlib.h>
      
      
      #define MAXMOTS 100	//nombre maximum de mots dans le dictionnaire
      #define LONGMOT 20 	//longueur en carcatere d'un mot
      
      char dico[LONGMOT][MAXMOTS];
      char mot[LONGMOT];
      char *pmot;
       
      FILE*f;
      
      
      //initialisation de la fonction de recherche dichotomique
      short dichotomie(char dico[LONGMOT][MAXMOTS],char *mot,short nb_mots){
      
      
      int i,j,k,trouve,indice;		//i->debut, j->fin
      int strcmp (const char *s1, const char *s2);
      
      
      i=0;
      j=nb_mots;
      trouve=0;
      
      while(i<=j && trouve == 0) {				
      	
      int moy;		//moyenne de(i,j)
      moy=(i+j)/2;
      k=moy;
      
      
      if(strcmp(dico[k],mot)==0) {
      	trouve=1;
      }
      if(strcmp(dico[k],mot)>0) {
      	j=k-1;}
      else{
      	i=k+1;
      }
      }
      
      
      
      if(trouve==0){indice=0;}	//si mot n'a pas été trouvé
      if(trouve==1){indice=1;}	//si mot a été trouvé
      
      return indice;
      }
      
      //initialisation des fonction de supression des majuscules et de la ponctuation
      void sup_ponc(char *pmot){
      				
      int i=0,j=0;
      char c;
      				
      //Traitement
      while (pmot[i]!= '/0'){
      c=pmot[i];
      if (isalpha(c)){
      pmot[j]=c;
      j++;
      }
      i++;
      }
      pmot[j]=0;
      }
      
      
      void sup_maj(char *pmot){
      				
      int i=0;
      char c;
      
      //Traitement
      while (pmot[i]!='/0'){
      c=pmot[i];
      if (isupper(c))
      c=tolower(c);
      pmot[i]=c;
      i++;
      }
      pmot[i]=0;
      }
      
      //fonction ajout
      
      void ajout(char dico[LONGMOT][MAXMOTS],char *mot,short nb_mot)
      			{
      				//Copie du nouveau mot dans le tableau
      				strcpy(dico[nb_mot],mot);
      				//Tri en mémoire du tableau dico
      				qsort((char**)dico,nb_mot,LONGMOT,strcmp);
      			}
       
      
      
      
      //FONCTION PRINCIPALE
      
      int main (int argc, char **argv[]) {
      
      char mot_texte[LONGMOT];	//mot lu dans le fichier text
      short nb_mots=0;
      int i,j,k;
      char *fichier_texte;		//nom du fichier à ouvrir et à traiter
      fichier_texte="fichierdevoir";
      
      
      
      printf("Veuillez entrer le nom du fichier texte a traiter pour la recherche dichotomique svp: ");
      fgets (fichier_texte, sizeof fichier_texte, stdin); 
      
      f=fopen("dico.dat","r");
      
      
      
      //Test que le fichier dico s'ouvre bien
      	if ((f=fopen("dico.dat","r")) == NULL)
      		printf("Impossible d'ouvrir le fichier Dico\n");
      
      
      
      //**
      printf("lecture mot par mot de tout le fichier et stockage dans un tableau en mémoire ....\n");
      i=0;
      while(fgetc(f)!=EOF)
      {
      	fgets(dico[i],19,f);
      	i++;
      }
      
      
      
      fclose(f);
      
      nb_mots=100;
      
      //**
      printf("Tri en mémoire du tableau dico....\n");
      qsort((char**)dico,nb_mots,LONGMOT,strcmp);	
      
      
      f=fopen("fichierdevoir","r");
      
      //Test que le fichier s'ouvre bien
      if ((f=fopen("fichierdevoir.dat","r")) == NULL)
      printf("Impossible d'ouvrir le fichier texte");
      
      
      pmot=mot;
      
      //**
      printf("Traitement pour chaque mot: supression des majuscules et de la ponctuation....");
      
      while (fscanf(f,"%s",mot) != EOF){
      sup_ponc(pmot);
      sup_maj(pmot);
      printf("Recherche du mot dans le tableau dico .....");
      dichotomie(dico, mot, nb_mots);
      
      if (dichotomie==0){
      char rep[5];	//variable pour la réponse de l'utilisateur
      fprintf (f,"Le mot n'existe pas. Voulez vous l'ajouter au dictionnaire? \n");
      fscanf(f,"%s",&rep);
      
      if (strcmp(rep,"oui")==0) {
      ajout(dico,mot,nb_mots);
      }
      }
      }
      
      fclose(f);
      
      f=fopen("dico.dat","a");
      
      for (i=0; i<nb_mots; i++) {
      fprintf(f,"%s\n",dico[i]);
      }
      
      fclose(f);
      
      }
      1. pETit changement de derniere minute pour mon code à 2 endroits...

        Le revoila mis a jour :

        #include<stdio.h>
        #include<string.h>
        #include<ctype.h>
        #include<stdlib.h>
        
        
        #define MAXMOTS 100	//nombre maximum de mots dans le dictionnaire
        #define LONGMOT 20 	//longueur en carcatere d'un mot
        
        char dico[LONGMOT][MAXMOTS];
        char mot[LONGMOT];
        char *pmot;
        int i=0;
        
        FILE*f;
        
        
        //initialisation de la fonction de recherche dichotomique
        short dichotomie(char dico[LONGMOT][MAXMOTS],char *mot,short nb_mots){
        
        
        int i,j,k,trouve,indice;		//i->debut, j->fin
        int strcmp (const char *s1, const char *s2);
        
        
        i=0;
        j=nb_mots;
        trouve=0;
        
        while(i<=j && trouve == 0) {				
        	
        int moy;		//moyenne de(i,j)
        moy=(i+j)/2;
        k=moy;
        
        
        if(strcmp(dico[k],mot)==0) {
        	trouve=1;
        }
        if(strcmp(dico[k],mot)>0) {
        	j=k-1;}
        else{
        	i=k+1;
        }
        }
        
        
        
        if(trouve==0){indice=0;}	//si mot n'a pas été trouvé
        if(trouve==1){indice=1;}	//si mot a été trouvé
        
        return indice;
        }
        
        //initialisation des fonction de supression des majuscules et de la ponctuation
        void sup_ponc(char *pmot){
        				
        int i=0,j=0;
        char c;
        				
        //Traitement
        while (pmot[i]!= '/0'){
        c=pmot[i];
        if (isalpha(c)){
        pmot[j]=c;
        j++;
        }
        i++;
        }
        pmot[j]=0;
        }
        
        
        void sup_maj(char *pmot){
        				
        int i=0;
        char c;
        
        //Traitement
        while (pmot[i]!='/0'){
        c=pmot[i];
        if (isupper(c))
        c=tolower(c);
        pmot[i]=c;
        i++;
        }
        pmot[i]=0;
        }
        
        //fonction ajout
        
        void ajout(char dico[LONGMOT][MAXMOTS],char *mot,short nb_mot)
        			{
        				//Copie du nouveau mot dans le tableau
        				strcpy(dico[nb_mot],mot);
        				//Tri en mémoire du tableau dico
        				qsort((char**)dico,nb_mot,LONGMOT,strcmp);
        			}
         
        
        
        
        //FONCTION PRINCIPALE
        
        int main (int argc, char **argv[]) {
        
        char mot_texte[LONGMOT];	//mot lu dans le fichier text
        short nb_mots=0;
        
        char *fichier_texte;		//nom du fichier à ouvrir et à traiter
        fichier_texte="fichierdevoir";
        
        
        
        printf("Veuillez entrer le nom du fichier texte a traiter pour la recherche dichotomique svp: ");
        fgets (fichier_texte, sizeof fichier_texte, stdin); 
        
        f=fopen("dico.dat","r");
        
        
        
        //Test que le fichier dico s'ouvre bien
        	if ((f=fopen("dico.dat","r")) == NULL)
        		printf("Impossible d'ouvrir le fichier Dico\n");
        
        
        
        //**
        printf("lecture mot par mot de tout le fichier et stockage dans un tableau en mémoire ....\n");
        
        while(fgetc(f)!=EOF)
        {
        int i;
        i =0;
        
        fgets(dico[i],19,f);
        i++;
        }
        
        
        
        fclose(f);
        
        nb_mots=100;
        
        //**
        printf("Tri en mémoire du tableau dico....\n");
        qsort((char**)dico,nb_mots,LONGMOT,strcmp);	
        
        
        f=fopen("fichierdevoir","r");
        
        //Test que le fichier s'ouvre bien
        if ((f=fopen("fichierdevoir.dat","r")) == NULL)
        printf("Impossible d'ouvrir le fichier texte");
        
        
        pmot=mot;
        
        //**
        printf("Traitement pour chaque mot: supression des majuscules et de la ponctuation....");
        
        while (fscanf(f,"%s",mot) != EOF){
        sup_ponc(pmot);
        sup_maj(pmot);
        printf("Recherche du mot dans le tableau dico .....");
        dichotomie(dico, mot, nb_mots);
        
        if (dichotomie==0){
        char rep[5];	//variable pour la réponse de l'utilisateur
        fprintf (f,"Le mot n'existe pas. Voulez vous l'ajouter au dictionnaire? \n");
        fscanf(f,"%s",&rep);
        
        if (strcmp(rep,"oui")==0) {
        ajout(dico,mot,nb_mots);
        }
        }
        }
        
        fclose(f);
        
        
        f=fopen("dico.dat","a");
        
        
        for (i=0; i<nb_mots; i++) {
        fprintf(f,"%s\n",dico[i]);
        }
        
        fclose(f);
        
        }


        VS m'indique donc que mot_texte est déclaré non référencé à sa déclaration dans le main !

        ;o)