Menu

Retour fonction [Résolu]

hcp7kuz 220 Messages postés mardi 18 août 2015Date d'inscription 1 mars 2018 Dernière intervention - 8 juil. 2017 à 19:34 - Dernière réponse : hcp7kuz 220 Messages postés mardi 18 août 2015Date d'inscription 1 mars 2018 Dernière intervention
- 9 juil. 2017 à 11:36
Bonjour,

Je suis en train d'écrire une fonction qui demande de faire un choix à l'utilisateur et le renvoie.
Le problème est que la variable
result
n'est pas affichée en dehors de la boucle while.

Code :

int main() {
    printf("Reponse : %s\n", demandeUtilisateur(2, "Bonjour ou Bonsoir ?", "Bonjour", "Bonsoir")); // n'affiche que "Reponse : "
    return 0;
}

char* lireChaine(int longueur) {
    char *positionEntree = NULL;
    char *chaine = NULL;
    chaine = malloc(longueur * sizeof(char));
    if (fgets(chaine, longueur, stdin) != NULL) {
        positionEntree = strchr(chaine, '\n');
        if (positionEntree != NULL)
            *positionEntree = '\0';
    }
    return chaine;
}

char* demandeUtilisateur(int nombreChoix, char* message, ...) {
    int reponseCorrect = -1;
    char* reponse[MAX_LENGTH];
    while(reponseCorrect) {
        printf("%s", message);
        char* reponse[MAX_LENGTH];
        strcpy(reponse, lireChaine(MAX_LENGTH));
        printf("%s\n", reponse); // affiche bien la réponse
        va_list ap;
        va_start(ap, nombreChoix);
        int i;
        for (i = 0; i < nombreChoix; i++) {
            if (!strcmp(reponse, va_arg(ap, char*)))
                reponseCorrect = 0;
        }
        if (reponseCorrect) {
            printf("Reponse incorect.\n");
            reponseCorrect--;
        }
        va_end(ap);
    }
    printf("%s\n", reponse); // n'affiche rien
    return reponse;
}


Merci pour votre aide,

hcp7kuz
Afficher la suite 

4 réponses

Répondre au sujet
Felice_ 266 Messages postés mardi 25 avril 2017Date d'inscription 20 juillet 2017 Dernière intervention - Modifié par Felice_ le 9/07/2017 à 10:15
0
Utile
3
Bonjour hcp7kuz,

T'as variable :
char* reponse[MAX_LENGTH];


est déclaré autant en dehors de ta boucle « while » qu'à l'intérieur, peut-être qu'elle devrai être déclaré uniquement à l'extérieur.
hcp7kuz 220 Messages postés mardi 18 août 2015Date d'inscription 1 mars 2018 Dernière intervention - 9 juil. 2017 à 10:20
Effectivement, erreur bête de ma part, merci.
Dalfab 326 Messages postés dimanche 7 février 2016Date d'inscription 21 avril 2018 Dernière intervention - 9 juil. 2017 à 10:31
En effet,
En faisant cela on obtient 2 tableaux. A l'intérieur du bloc celui défini à l'intérieur masque celui qui n'existe qu'à l'extérieur.
hcp7kuz 220 Messages postés mardi 18 août 2015Date d'inscription 1 mars 2018 Dernière intervention > Dalfab 326 Messages postés dimanche 7 février 2016Date d'inscription 21 avril 2018 Dernière intervention - 9 juil. 2017 à 11:36
D'accord, c'est noté :)
Commenter la réponse de Felice_