[Langage C] variable portée : fichier

Jo -  
mamiemando Messages postés 33778 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
Apres quelques heures de recherches et d'essais, vous êtes mon dernier espoir!!
Mon problème :
J'ai un projet, qui comporte plusieurs fichiers, et je cherche à définir une variable (structure type pile) de telle sorte qu'elle soit lisible dans toutes les fonctions d'un fichier.
Je la déclare, et je veux en faire une copie pour avoir un pointeur de sommet de pile.


struct table_{
  char * nom;
  int valeur;
  table suivant;
};
typedef struct table_ * table;
table tab; 
table top;

void initialisation (){
  top=tab;
}

int appartient (char *nom){
  int retour=0;
  table current=tab;
  while(current != top){
    if(!strcmp(current->nom,nom)){retour=1; break;}
    current=current->suivant;
  } 
  return retour; 
}

void ajout (char *nom, int valeur){
  top->suivant=(table)malloc(sizeof(struct table_)); /* <- cette ligne plante */
  strcpy(top->nom,nom);
  top->valeur=valeur;
  top=top->suivant;
}

int valeur (char *nom){
  table current=tab;
  while(strcmp(current->nom,nom)){
    current=current->suivant;
  }
  return current->valeur;
}

void miseajour(char *nom, int valeur){
  table current=tab;
  while(strcmp(current->nom,nom)){
    current=current->suivant;
  }
  current->valeur=valeur;
}


Le probleme vient du fait que je n'arrive pas à acceder aux variables tab et top de l'interieur des fonctions.

J'implore votre aide!
Merci!!
A voir également:

1 réponse

mamiemando Messages postés 33778 Date d'inscription   Statut Modérateur Dernière intervention   7 884
 
En fait les variables globales, c'est mal. Il faut simplement passer tes variables tab et top en paramètre des fonctions. Ca peut paraître un peu lourd à l'écriture, mais c'est comme ça ^^
0