[Langage C] variable portée : fichier

Fermé
Jo - 8 avril 2007 à 16:48
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 9 avril 2007 à 12:28
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 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 7 812
9 avril 2007 à 12:28
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