1 2 3 4 5
| char decoupage(char mess[80], char action[80]){
char mess2[80];
...
return mess2;
} |
La fonction retourne mess2 qui est l'adresse du premier élément du tableau (donc du type char*). Or le prototype indique un char. Le compilateur a du râler !
La correction de cette erreur est donc d'écrire :
char * decoupage(char mess[80], char action[80]){
MAIS, tes ennuis ne sont pas terminés :
mess2 est l'adresse d'une variable locale à la fonction. En sortant de la fonction, les variables locales sont détruites et tu renvoies alors l'adresse de quelque chose qui n'existera plus -> plantage.
Solutions possibles :
- faire de l'allocation dynamique pour le tableau mess2 ;
- mettre mess2 en variable globale (mais comme les variables globales sont à proscrire sauf absolue nécessité, tu rejeteras cette solution)
- créer le tableau mess2 en dehors de la fonction (ici dans main) pour le passer en argument de la fonction.
Remarques :
- dans
decoupage((char *)mess,(char *)action);
les casts (char*) sont parfaitement inutiles, ici mess et action sont déjà des char *
- Il faut être conscient que les 80 ne servent à rien ici, le compilateur s'en fiche, et qu'on peut les omettre
char decoupage(char mess[80], char action[80]){
et écrire
1 2 3
| char decoupage(char mess[], char action[]){....
// ou ce qui est équivalent :
char decoupage(char * mess, char * action){ |
Partager