Utilisation de tableau de pointeurs de taille variable
Bonjour à tous !
J'ai un petit soucis sur l'utilisation de tableau entre 2 fichiers (je suppose que le problème vient de là... (ou alors j'ai fait une grosse bourde que le compilo voit pas !) :
Je souhaite créer une fonction qui alloue un tableau 2D et retourne un pointeur vers ce tableau (le tableau n'a pas de taille fixe et je passe les dimensions du tableau dans les arguments de ma fonction.) Cette fonctions peut être appelée depuis différents fichier. J'ai crées 2 fonctions mais aucune des 2 ne marche, dès que j’exécute ca crash !
Le main.c :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
#include <stdlib.h>
#include "tab.h"
int main(void)
{
int height = 10;
int width = 10;
int **montableau1 = NULL;
int **montableau2 = NULL;
montableau1 = InitTabRet(height, width);
InitTab(montableau2, height, width);
return 0;
} |
Le fichier ou se trouvent les fonctions (tab.c) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
#include <malloc.h>
int** InitTabRet(int height, int width)
{
int** newtab = malloc(height*width*sizeof(int));
int i,j;
for(i=0;i<height;i++)
{
for(j=0;j<width;j++)
newtab[height][width] = 0;
}
return newtab;
}
void InitTab(int **ptab, int height, int width)
{
int **newtab = malloc(height*width*sizeof(int));
int i,j;
for(i=0;i<height;i++)
{
for(j=0;j<width;j++)
newtab[height][width] = 0;
}
ptab = newtab;
} |
le tab.h prototypant les 2 fonctions :
Code:
1 2 3 4 5 6
|
#ifndef TAB_H_INCLUDED
#define TAB_H_INCLUDED
int** InitTabRet(int height, int width);
void InitTab(int **ptab, int height, int width);
#endif // TAB_H_INCLUDED |
J'ai cru comprendre que les variables étaient locales au fichier, j'ai essayé de mettre un "extern" pour que la variable soit accessible de partout. Comme en fait il y aura plusieurs tableaux générés par la fonction j'ai du mal a penser le concept de rentre une variable qui sera dynamique et multiple (du coup pas unique...) accessible... Mais de toute façon ca marche pas !
Merci pour votre aide !