Possible use of '' before defintion in function main

Possible use of '' before defintion in function main - C - Programmation

Marsh Posté le 09-05-2010 à 18:16:27    

bonjour, jai un probleme "  Possible use of 'x' before defintion in function main  "
svp aidez moi merci

  
Code :
  1. #include<stdio.h>
  2. #include<conio.h>
  3. struct noeud
  4. {
  5.   int val;
  6.   struct noeud *svt;
  7. };
  8. typedef struct noeud *liste;
  9. liste init()
  10. {
  11.   liste l;
  12.   l=NULL;
  13.   return l;
  14. }
  15. int vide(liste l)
  16. {
  17.   if(l==NULL)
  18.     return 1;
  19.   else
  20.     return 0;
  21. }
  22. liste ajoutdeb(liste l,int x)
  23. {
  24.   liste nouv;
  25.   nouv=(liste)malloc(sizeof(liste));
  26.   nouv->val=x;
  27.   nouv->svt=l;
  28.   l=nouv;
  29.   return l;
  30. }
  31. liste remplir(liste l)
  32. {
  33.   int n,i,a;
  34.   printf("Donner le nombre d'‚l‚ments \n" );
  35.   scanf("%d",&n);
  36.   for(i=0;i<n;i++)
  37.     {
  38.       printf("Donner une valeur \n" );
  39.       scanf("%d",&a);
  40.       l=ajoutdeb(l,a);/*ou insertfin(l,a);*/
  41.     }
  42.   return l;
  43. }
  44. void afficherec(liste l)
  45. {
  46.   liste p=l;
  47.   if(p!=NULL)
  48.     {
  49.       printf("%d \t",p->val);
  50.       afficherec(p->svt);
  51.     }
  52. }
  53. liste insertfin(liste l,int x)
  54. {
  55.   liste nouv,p;
  56.   nouv=(liste)malloc(sizeof(liste));
  57.   nouv->val=x;
  58.   nouv->svt=NULL;
  59.   if(l==NULL)
  60.     l=nouv;
  61.   else
  62.     {
  63.       p=l;
  64.       while(p->svt!=NULL)
  65.         p=p->svt;
  66.       p->svt=nouv;
  67.     }
  68.   return l;
  69. }
  70. liste inverserliste(liste l)
  71. {
  72.   liste l2=NULL,p=l;
  73.   while(p!=NULL)
  74.     {
  75.       l2=ajoutdeb(l2,p->val);
  76.       l=l->svt;
  77.       free(p);
  78.     }
  79.   l=l2;
  80.   return l;
  81. }
  82. liste existe(liste l,int x)
  83. {
  84.   if(l==NULL)
  85.     return NULL;
  86.   else if(l->val==x)
  87.     return l;
  88.   else
  89.     return existe(l->svt,x);
  90. }
  91. liste inserer(liste l,int N,liste res)
  92. {
  93.   liste nouv;
  94.   nouv=(liste)malloc(sizeof(liste));
  95.   nouv->val=N;
  96.   nouv->svt=res->svt;
  97.   res->svt=nouv;
  98.   return l;
  99. }
  100. liste supprimer(liste l,int x)
  101. {
  102.   liste p,prec;
  103.   if(l->val==x)
  104.     {
  105.       p=l;
  106.       l=l->svt;
  107.       free(p);
  108.     }
  109.   else
  110.     {
  111.       p=l;
  112.       while(p->val!=x && p!=NULL)
  113.         {
  114.           prec=p;
  115.           p=p->svt;
  116.         }
  117.       if(p->val==x)
  118.         {
  119.           prec->svt=p->svt;
  120.           free(p);
  121.         }
  122.     }
  123.   return l;
  124. }
  125. void main()
  126. {
  127.   liste l,res;
  128.   int N,a,x;
  129.   clrscr();
  130.   l=init();       
  131.   if(vide(l)==1)
  132.     printf("Liste vide \n" );
  133.   else
  134.     printf("Liste non vide \n" );
  135.   l=remplir(l);
  136.   afficherec(l);
  137.   printf("Donner une valeur \n" );
  138.   scanf("%d",&a);
  139.   res=existe(l,a);
  140.   if(res==NULL)
  141.     printf("Non existe \n" );
  142.   else
  143.     {
  144.       printf("Donner l'‚l‚ment … inserer \n" );
  145.       scanf("%d",&N);
  146.       l=inserer(l,N,res);
  147.       afficherec(l);
  148.     }
  149.   l=supprimer(l,x);
  150.   afficherec(l);
  151.   getch();
  152. }


Message édité par gilou le 09-05-2010 à 18:42:12
Reply

Marsh Posté le 09-05-2010 à 18:16:27   

Reply

Marsh Posté le 09-05-2010 à 18:48:51    

Il faudrait le numéro de la ligne générant le warning.
Si c'est la ligne 149 qui génère cette erreur, ça pourrait être parce que x est déclaré, mais n'a pas eu de valeur assignée.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 09-05-2010 à 18:54:49    

wi c le cas quesque je doit faire ?!!

Reply

Marsh Posté le 09-05-2010 à 19:10:37    

Réfléchir a pourquoi tu utilises x a cet endroit....
Quel valeur est il censé contenir et l'initialiser avant son utilisation... (il te faut donc demander a l'utilisateur quel valeur il veut supprimer de la liste)
me fait penser que dans supprimer(liste l, int x) tu ne testes pas si l est NULL avant d'accéder sa première valeur...

Code :
  1. liste supprimer(liste l,int x)
  2. {
  3.    liste p,prec;
  4.    if(l->val==x) // si l est null, l->val fait une erreur
  5.      {
  6.        p=l;
  7.        l=l->svt;
  8.        free(p);
  9.      }
  10.    else
  11.      {
  12.        p=l;
  13.        while(p->val!=x && p!=NULL) // si p est NULL, p->val sera tester avant donc erreur
  14.          {
  15.            prec=p;
  16.            p=p->svt;
  17.          }
  18.        if(p->val==x) //on sort du while si on a trouver la valeur ou si p est null, dans ce dernier cas y une erreur ici!
  19.          {
  20.            prec->svt=p->svt;
  21.            free(p);
  22.          }
  23.      }
  24.    return l;
  25. }


Message édité par breizhbugs le 09-05-2010 à 19:20:03
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed