Variable locale non référencée ?
Fermé
MouchT8
Messages postés
22
Date d'inscription
samedi 24 mai 2008
Statut
Membre
Dernière intervention
11 août 2008
-
18 juin 2008 à 16:05
sfisabbt - 6 juil. 2012 à 18:06
sfisabbt - 6 juil. 2012 à 18:06
A voir également:
- Variable locale non référencée ?
- Ce programme est écrit en python. il construit un mot secret dans une variable mais il ne l'affiche pas. modifiez-le pour qu'il affiche le mot secret. exécutez-le. quel est ce mot secret ? ✓ - Forum Python
- Utilisation d'une variable locale non assignée ✓ - Forum C#
- Vba range avec variable ✓ - Forum VB / VBA
- Arrivée a l'installation locale ✓ - Forum Consommation et internet
- Variable objet ou variable de bloc with non définie - Forum VB / VBA
5 réponses
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
"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
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 524
18 juin 2008 à 18:17
18 juin 2008 à 18:17
Salut,
En quel langage? il y en a des centaines ;-)
En quel langage? il y en a des centaines ;-)
MouchT8
Messages postés
22
Date d'inscription
samedi 24 mai 2008
Statut
Membre
Dernière intervention
11 août 2008
1
18 juin 2008 à 18:20
18 juin 2008 à 18:20
oups oui pardon ^^
en C !!
et je travaille sous visual studio 2005 !!
voila !
:o)
en C !!
et je travaille sous visual studio 2005 !!
voila !
:o)
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 524
18 juin 2008 à 18:22
18 juin 2008 à 18:22
Tu l'a déclaaré dans ta fonction ton mot_texte?
Genre char *mot_texte; par exemple.
Genre char *mot_texte; par exemple.
MouchT8
Messages postés
22
Date d'inscription
samedi 24 mai 2008
Statut
Membre
Dernière intervention
11 août 2008
1
18 juin 2008 à 18:29
18 juin 2008 à 18:29
oui!
voici mon code ça peut aider ^^
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);
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
MouchT8
Messages postés
22
Date d'inscription
samedi 24 mai 2008
Statut
Membre
Dernière intervention
11 août 2008
1
18 juin 2008 à 18:32
18 juin 2008 à 18:32
pETit changement de derniere minute pour mon code à 2 endroits...
Le revoila mis a jour :
VS m'indique donc que mot_texte est déclaré non référencé à sa déclaration dans le main !
;o)
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)