2017-09-22 5 views
0

Quelqu'un peut-il lancer le programme C suivant sur votre IDE et me signaler ce qui me manque?Lecture/affichage simple C le programme génère une valeur incorrecte pendant que l'utilisateur entre les données

#include<stdio.h> 
#include<conio.h> 

int main() 
{ 

    int a; 
    char s; 
    char n[10]; 

    printf("What is your name?: "); 
    scanf("%s", &n); 

    printf("What is your age?: "); 
    scanf("%d", &a); 

    printf("Are you male or female?: "); 
    scanf("%c", &s); 

    printf("Your name is %s\nYour age is %d\nYour sex is %c\n", n, a, s); 

    getch(); 
    return 0; 

} 

Alors que nous entrons dans l'âge et appuyez sur le bouton d'entrée, il se glisse et montre la mauvaise sortie sans demander le soir pour la troisième entrée « Êtes-vous un homme ou une femme? ». Je l'ai testé sur Turbo C++, Dev C++, blocs de code, tous montrent la même sortie d'erreur.

enter image description here

+0

La copie possible de [Deuxième scanf ne fonctionne pas] (https://stackoverflow.com/questions/4023643/second-scanf-is-not-working) –

Répondre

0

Il serait bien d'écrire

printf("What is your name?: "); 
scanf("%s", n); 
      ^^^ 

ou même

printf("What is your name?: "); 
scanf("%9s", n); 

place de

printf("What is your name?: "); 
scanf("%s", &n); 

et

printf("Are you male or female?: "); 
scanf(" %c", &s); 
     ^^^ 

au lieu de

printf("Are you male or female?: "); 
scanf("%c", &s); 

Sinon, dans le dernier cas, un espace blanc est lu dans la s variable.