[Langage C] variable portée : fichier

Jo -  
mamiemando Messages postés 33228 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!!
Configuration: Windows XP
Internet Explorer 6.0
Gcc

1 réponse

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    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