Retour fonction

Résolu
hcp7kuz Messages postés 243 Date d'inscription   Statut Membre Dernière intervention   -  
hcp7kuz Messages postés 243 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   11
 
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   Statut Membre Dernière intervention   23
 
Effectivement, erreur bête de ma part, merci.
0
Dalfab Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   101
 
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   Statut Membre Dernière intervention   23 > Dalfab Messages postés 706 Date d'inscription   Statut Membre Dernière intervention  
 
D'accord, c'est noté :)
0