Signaler

Retour fonction [Résolu]

Posez votre question hcp7kuz 187Messages postés mardi 18 août 2015Date d'inscription 9 juillet 2017 Dernière intervention - Dernière réponse le 9 juil. 2017 à 11:36 par hcp7kuz
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 
Utile
+0
plus moins
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 187Messages postés mardi 18 août 2015Date d'inscription 9 juillet 2017 Dernière intervention - 9 juil. 2017 à 10:20
Effectivement, erreur bête de ma part, merci.
Répondre
Dalfab 254Messages postés dimanche 7 février 2016Date d'inscription 19 juillet 2017 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.
Répondre
hcp7kuz 187Messages postés mardi 18 août 2015Date d'inscription 9 juillet 2017 Dernière intervention - 9 juil. 2017 à 11:36
D'accord, c'est noté :)
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !