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 :
Le fichier ou se trouvent les fonctions (tab.c) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 tab.h prototypant les 2 fonctions :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
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 !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Merci pour votre aide !
Partager