- tleb,
Bonjour ,
je ne comprend pas vraiment pourquoi le code suivant (commenté avec ce que j’espérais qu'il fasse) ne fonctionne pas:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #include <stdio.h> #include <stdlib.h> char charAnswer(char text[500]) // on donne un texte à la fonction { char entered[200]; entered[0] = '\0'; // on initialise la chaine de caractère à vide (signe de la fin de la chaine au début) while (entered[0] == '\0') { // tant que la chaine est vide... printf("%s", text); // on affiche le texte donné à la fonction scanf("%s", &entered); // on demande d'entrer une réponse } return &entered; //on retourne un pointeur qui pointe sur la chaine entrée par l'utilisateur } int main() { printf("%s", *charAnswer("Name: ")); // on appelle la fonction charAnswer, et on affiche ce que contient la variable pointé par le pointeur retourné par la fonction charAnswer return 0; } |
J'ai ces erreurs:
Fonction | Ligne | Type | Message |
---|---|---|---|
charAnswer | 12 | Warning | format '%s' expects argument of type 'char ', but argument 2 has type 'char ()[200]' [-Wformat] |
charAnswer | 15 | Warning | return makes integer from pointer without a cast [enabled by default] |
charAnswer | 15 | Warning | function returns address of local variable [enabled by default] |
main | 20 | Error | invalid type argument of unary '*' (have 'int') |
J'ai l'impression que le warning ligne 15 qui indique que le pointeur est un int est la cause du problème, mais je ne sais pas comment le résoudre. J'ai essayé de cast, d'utiliser une variable comme pointeur et plein d'autres choses (même si je ne comprend pas pourquoi je les ai fait, ces choses) mais rien n'y fait.
Merci !
+0
-0