bonjour à tous,
j'écris afin d'avoir des renseignements sur l'erreur suivante concernant les char**,char[] et char* :
synthéthiquement, voici ce que fait mon programme :
main.c
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #include "fonctions.h" int main (int argc,char *argv[]) { char tableau1[16],tableau2[16]; fonction1 (&tableau1[16],&tableau2[16]); //blahblah... fonction2(tableau1[16],tableau2[16]); }
fonction.c
fonction.h
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
27
28
29
30
31 fonction1 (char *tableau1[16],char *tableau2[16]) { memset (*tableau1,'\0',16); memset (*tableau2,'\0',16); while (la condition) { *tableau1[i]=blahblah; i++; } while (la condition2) { *tableau2[i]=blahblah2; i++; } } //blahblah fonction2(char tableau1[16],char tableau2[16]) { if(strcmp(tableau1,"string1")==0) { //blahblah } if(strcmp(tableau2,"string2")==0) { //blahblah } }
L'idée est donc que j'initialise un tableau de 16 caractères dans mon main, que je fais passer par un pointeur dans une fonction 1 qui va modifier ce tableau (je passe par un pointeur car il y a en réalité 9 tableaux). Enfin après diverses choses, je fais passer ce tableau sans pointeur dans une fonction2 car celle-ci se sert de ce tableau sans le modifier. En gros, j'ai suivi la partie "à l'assaut des pointeurs du tutoriel pour apprendre le C avec des tableau au lieu des int.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 fonction1(char *tableau1[16],char *tableau2[16]); fonction2(char tableau1[16];char tableau2[16])
Au final, le compilo me dit :
fonction1: attention, on passe un argument d'un type de pointer incompatible (passing argument from incompatible pointer type)
attendu: 'char **' mais l'argument est de type 'char *'
fonction2 : attention, on passe un argument qui produit un entier à partir d'un pointer sans appel (passing argument makes integer from pointer without a cast)
attendu : 'char' mais l'argument est de type 'char *'
donc voilà, je vais être franc, je suis complètement perdu sans comprendre mon erreur. Donc si quelqu'un pouvait m'aider, ça serait sympa! les sources complètes sont en pièces jointes.
merci par avance!
Partager