1

g un petit probleme en C :
voila ma fonction:



char motclef(char nommo, char def)
{
int i=0;
if(nb_elts_tabl == tableau)
yyerror("plus de place pour stocker de nouveaux mots clefs");
else{
char tabl[i][0];
char tabl2[i][1];
strcpy(tabl[i][0],nommo);
strcpy(tabl2[i][1],def);
i++;
nb_elts_tabl=i;
printf("nouveau mot clef:%s stocké\n",nommo);
return def;
}

et voila ce que me retourne le compilateur et je comprend pas pourquoi:
passage de l'argument n°2 de « strcpy » transforme un entier en pointeur sans transtypage

please help me............

2

strcpy(tabl[0],nommo); strcpy(tabl2[1],def);

mommo et def sont de type char, et non pas de type char * ; strcpy attent un char * en second argument (peut-être même un const char *, je sais plus)


char tabl[0]; char tabl2[1];

avec ça, tabl a une taille de 0 caractères => tu vas pas pouvoir mettre gd chose dedans => si tu essaye de mettre quelque chose dedans, ça plantera (vu que ce que tu mettre sera nécessairement plus grand que rien)
tabl2, tu as la place de mettre un seul caractère : le 0 de fin de chaine, donc (puisque strcpy copie le 0 de fin de chaine) => tu n'as pas la place de mettre du contenu utile => ça plantera
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

3

squale92
:
strcpy(tabl[0],nommo); strcpy(tabl2[1],def);
mommo et def sont de type char, et non pas de type char * ; strcpy attent un char * en second argument (peut-être même un const char *, je sais plus)

Il y a aussi le même problème avec le premier argument : tabl[0] est un 'char' (c'est à dire un seul caractère, et non pas une chaîne de caractères), qui correspond au premier caractère de la chaîne 'tabl'. Et accessoirement, comme 'tabl' est de longueur 0 (comme l'a dit squale), tu n'as même pas le droit d'aller lire le premier caractère tongue

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

4

Un tableau de longueur 0 n'est même pas du C ISO/ANSI valide!
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

5

je sais pas si vous avez remarqué, mais le post de cicdrek passe en italique !
char motclef(char nommo, char def)
 {
 int i=0;
 if(nb_elts_tabl == tableau)
 yyerror("plus de place pour stocker de nouveaux mots clefs");
 else{
 char tabl[i][0];
 char tabl2[i][1];
        strcpy(tabl[i][0],nommo);
        strcpy(tabl2[i][1],def);
        i++;
        nb_elts_tabl=i;
        printf("nouveau mot clef:%s stocké\n",nommo);
        return def;
}

Tout ce que vous racontez n'est pas faux, mais presque ^^

6

ha oué, je pensais pas qu'il y avait tant de [ i ], enfin quoiqu'il arrive il confond "char" et "char *"...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

7

./5> argh, putain, j'avais pas pensé à ça grin
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

8

 char tabl[i][0];
 char tabl2[i][1];

* Tableaux de taille variable. Pas de l'ANSI C89 ou ISO C90 valide. Valide en ISO C99.
* Tableau de dimension 0. Pas de l'ANSI C89, ISO C90 ou ISO C99 valide. Passe sous GCC, mais est erroné ici.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité