Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1423 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Passer un tableau de pointeur au main

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Passer un tableau de pointeur au main

n°1677284
jeunestoma​c
Posté le 27-01-2008 à 00:03:51  profilanswer
 

Bonsoir a tous,  
 
J'ai un soucis, alors j'ai fais une fonction qui rempli un tableau par des caracteres au hasard.  
Ce tableau, je sais l'utiliser dans ma fonction mais impossible de l'utiliser dans le MAIN et je ne comprend pas pourquoi.
 
Voici des bouts de mon code; le MAIN
 

Code :
  1. char **code;
  2. int v,i,p,e,f;
  3.      
  4.         v=version();
  5.         i=taille_combi();
  6.         p=nb_partie();
  7. generateur(v,i,p,code);


 
Et la fonction;  

Code :
  1. void generateur(int version, int taille,int nbpartie, char **code)
  2. {
  3. int i,j,k,l,x;
  4. char couleur[]={'b','c','g','j','m','n','r','v'};
  5.     code=malloc(nbpartie * sizeof(char*));
  6.     if (code == NULL)
  7.     {
  8.         printf("Impossible d'allouer la memoire necessaire pour les parties !!!\n" );
  9.     }
  10.     for (i = 0; i < nbpartie; i++)
  11.     {
  12.         code[i] = malloc((taille + 1) * sizeof(char));
  13.         if (code[i] == NULL)
  14.         {
  15.             printf("Impossible d'allouer la memoire pour le code numero [%d] !!!\n",(i+1));
  16.         }
  17.         code[i][taille] = '\0';
  18.     }
  19.     srand(time(NULL));
  20.     for (i = 0; i < nbpartie; i++)
  21.     {
  22.         for (j = 0; j < taille; j++)
  23.         {
  24.             if(version==1)
  25.             {
  26.                 k=rand()%8;
  27.                 code[i][j] = couleur[k];
  28.             }
  29.             else
  30.             {
  31.                 do
  32.    {
  33.    k=rand()%8;
  34.    x=0;
  35.    for(l = 0; l < (j+1); l++)
  36.    {
  37.     if( code[i][l] == couleur[k])
  38.     {
  39.     x=1;
  40.     }
  41.     else if( l==j)
  42.     {
  43.     code[i][j] = couleur[k];
  44.     }
  45.                 }
  46.                 }
  47.    while(x!=0);
  48.   }
  49.  }
  50. }
  51. }


 
 
donc, si je place ceci; puts(code[3]); a la fin de la fonction, je sais afficher une ligne du code, tandis que si je le mets dans le main, ça plante !!!  
 
Merci pour ceux qui sauraient m'eclairer sur la raison pour laquelle je n'y arrive pas...  
 
Tchuss.
 

mood
Publicité
Posté le 27-01-2008 à 00:03:51  profilanswer
 

n°1677292
tpierron
Posté le 27-01-2008 à 01:45:20  profilanswer
 

Normal. J'ai l'impression qu'en manipulant 'code' dans la fonction 'generateur', tu espères que ça modifiera la variable de même nom dans main(). Révise ta notion des pointeurs. 3 façons de contourner le problème :
 

  • Fait l'allocation de ta matrice 'code' dans main(). Dans ce cas tu pourras passer la valeur de code à ta fonction generateur()
  • Retourne l'adresse allouée dans generateur() à la fonction main(), du genre : "code = generateur(v, i, p);"
  • Utilise un "char ***" dans le prototype de generateur(). Un peu lourd.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Passer un tableau de pointeur au main

 

Sujets relatifs
Passer une classe à une fonction dans une méthode.Problème pour adapter la taille d'une image à la cellule d'un tableau
macro xls décaler tableauComposant tableau ? Insérer des données dans une BDD
Probleme de malloc sur un tableau de pointeur.[C] intercaler des elements au milieu d'un tableau
Onclick sur un tableau[PHP] aide pour un tableau
passer des guillemets dans une txtbox me pose problème 
Plus de sujets relatifs à : Passer un tableau de pointeur au main


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR