Retour fonction

Résolu/Fermé
hcp7kuz Messages postés 243 Date d'inscription mardi 18 août 2015 Statut Membre Dernière intervention 23 mars 2019 - Modifié le 8 juil. 2017 à 19:34
hcp7kuz Messages postés 243 Date d'inscription mardi 18 août 2015 Statut Membre Dernière intervention 23 mars 2019 - 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

1 réponse

Felice_ Messages postés 265 Date d'inscription mardi 25 avril 2017 Statut Membre Dernière intervention 20 juillet 2017 11
Modifié le 9 juil. 2017 à 10:15
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.
0
hcp7kuz Messages postés 243 Date d'inscription mardi 18 août 2015 Statut Membre Dernière intervention 23 mars 2019 23
9 juil. 2017 à 10:20
Effectivement, erreur bête de ma part, merci.
0
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
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.
0
hcp7kuz Messages postés 243 Date d'inscription mardi 18 août 2015 Statut Membre Dernière intervention 23 mars 2019 23 > Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023
9 juil. 2017 à 11:36
D'accord, c'est noté :)
0