4 pièce(s) jointe(s)
erreur de type char**,char*,char
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:
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
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 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
}
} |
fonction.h
Code:
1 2
| fonction1(char *tableau1[16],char *tableau2[16]);
fonction2(char tableau1[16];char tableau2[16]) |
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.
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!