Aller au contenu

[C] Passage de tableau de caractères en parametre de fonctio


paro

Messages recommandés

Bonjour à tous,

Voila mon probleme :

Je voudrais passer un tableau de caractères en 2 dimensions en paramètre d'une fonction.

ex : la fonction serait la suivante :

void aleatab(char * tabn, int ligne, int colonne);

Le tableau est créé dans une autre fonction de la façon suivante :

void tab(int ligne, int colonne)

{

char tabn[ligne][colonne];

...

L'appel de la fonction est le suivant :

aleatab(tabn, ligne, colonne);

La fonction aleatab est définie comme ceci :

void aleatab(char * tabn, int ligne, int colonne)
{
  int nombreAuHasard, i,j;

  srand(time(NULL));
  for (i=0;i   {
     for(j=0;j      {
        nombreAuHasard = (rand() % (MAX - MIN + 1)) + MIN; /* on tire aleatoirement 1 ou 0 */
        if(nombreAuHasard==0)
        {
           tabn[i][j]=' '; 
        }
        else
        {
           tabn[i][j]='*';
        }
     }
  }
} 

lors de l'execution j'obtiens les erreurs suivantes :

warning: passing argument 1 of ‘aleatab’ from incompatible pointer type

In function ‘aleatab’:

error: subscripted value is neither array nor pointer

error: subscripted value is neither array nor pointer

Je pensais pourtant que l'on devait s'y prendre ainsi pour passer un tableau à 2 dimensions en paramètre...

Si quelqu'un pouvait m'éclaircir sur ce probleme.

Merci d'avance.

Lien à poster

deja tu cree le tableau dans une fonction sans garder en memoire l'adresse du tableau. En plus a chaque appel de fonction, du cree un tableau, mais il sera automatiquement detruit lors de la fin de la fonction

Ensuite, un tableau de 2 dimension n'est en fait qu'un pointeur sur pointeur. Donc il faut passer un paramêtre du genre char **tab.

pour resumer,

1: Creer et allouer le tableau :

tab = (char **)malloc(nb_lignes * sizeof(char *))

for(i=0;i

tab = (char*)malloc(nb_colonnes * sizeof(char))

1.bis: Initialiser le tableau avec des 0, en particulier si c'est pour utiliser des chaines de caractères.

2: Passer le tableau en paramètre

void fonction(char **tab, int nb_lignes, int nb_colonnes)

3: utiliser le tableau normalement en faisant attention a pas deborder

Lien à poster

Merci bien pour ton aide.

Il y a 2-3 trucs que j'ai oublié de préciser...

Premièrement, ce tableau ne contiendra en fait que des '*' ou des espaces et sert en fait à symboliser une generation de bacteries selon le jeu de la vie de Conway.

Deuxièmement, on m'a demandé de le faire sans utiliser d'allocation dynamique (mais s'il n'y a pas d'autre solution, je ferais avec).

J'essayerais les modifications au plus tôt.

Encore merci.

Lien à poster
  • 3 semaines après...
×
×
  • Créer...