The code skips the fgets, not reading the word

0

The program is not reading my fgets() getting there it jumps.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    float altura, peso,pesoidealm,pesoidealf;

    char sexo[10];

    printf("Digite sua altura\n");
    scanf("%f",&altura);

    printf("Digite seu peso\n");
    scanf("%f",&peso);

    printf("Digite seu sexo\n");
    fgets(sexo,9,stdin);

    pesoidealm=(72.7*altura)-58;
    pesoidealf=(62.1*altura)-44.7;

    if(!(strcmp(sexo,"masculino")))
    {
        printf("Peso Ideal:%f\n",pesoidealm);
    }
    system("PAUSE");
    return 0;
}
    
asked by anonymous 22.10.2018 / 20:16

2 answers

3

Being direct, use getchar(); before calling fgets . The code looks like this:

printf("Digite sua altura\n");
scanf("%f",&altura);
printf("Digite seu peso\n");
scanf("%f",&peso);
printf("Digite seu sexo\n");

getchar();

fgets(sexo,9,stdin);
    
22.10.2018 / 20:28
5

The simple way to do this is to use scanf() itself, so in a simpler and more organized way in the code:

#include <stdio.h>
#include <string.h>

int main() {
    float altura, peso;
    char sexo[10];
    printf("Digite sua altura\n");
    scanf("%f", &altura);
    printf("Digite seu peso\n");
    scanf("%f", &peso);
    printf("Digite seu sexo\n");
    scanf("%9s", sexo);
    if (!strcmp(sexo, "masculino")) printf("Peso Ideal:%f\n", (72.7 * altura) - 58);
}

See running on ideone . And no Coding Ground . Also put it in GitHub for future reference .

    
22.10.2018 / 20:46