0
I have a problem that the user has to enter the name and age of 5 people, and have to print on the screen the name of the younger person.
I made the following code
#include <stdio.h>
#include <string.h>
struct pessoa {
char nome[1000];
int idade;
};
int main() {
pessoa pessoa1;
pessoa pessoa2;
pessoa pessoa3;
pessoa pessoa4;
pessoa pessoa5;
printf("\n Insira o nome da primeira pessoa: ");
fgets(pessoa1.nome, 1000, stdin);
printf("\n Insira o nome da segunda pessoa: ");
fgets(pessoa2.nome, 1000, stdin);
printf("\n Insira o nome da terceira pessoa: ");
fgets(pessoa3.nome, 1000, stdin);
printf("\n Insira o nome da quarta pessoa: ");
fgets(pessoa4.nome, 1000, stdin);
printf("\n Insira o nome da quinta e ultima pessoa: ");
fgets(pessoa5.nome, 1000, stdin);
printf("\n Insira a idade da primeira pessoa: ");
scanf_s("%d", &pessoa1.idade);
printf("\n Insiraa idade da segunda pessoa: ");
scanf_s("%d", &pessoa2.idade);
printf("\n Insira a idade da terceira pessoa: ");
scanf_s("%d", &pessoa3.idade);
printf("\n Insira a idade da quarta pessoa: ");
scanf_s("%d", &pessoa4.idade);
printf("\n Insira o nome da quinta e ultima pessoa: ");
scanf_s("%d", &pessoa5.idade);
pessoa pessoaMaisNova;
pessoaMaisNova.idade = 150;
if (pessoa1.idade < pessoaMaisNova.idade) {
pessoaMaisNova = pessoa1;
}
if (pessoa2.idade < pessoaMaisNova.idade) {
pessoaMaisNova = pessoa2;
}
if (pessoa3.idade < pessoaMaisNova.idade) {
pessoaMaisNova = pessoa3;
}
if (pessoa4.idade < pessoaMaisNova.idade) {
pessoaMaisNova = pessoa4;
}
if (pessoa5.idade < pessoaMaisNova.idade) {
pessoaMaisNova = pessoa5;
}
printf("\n Nome da pessoa mais nova: %s", pessoaMaisNova.nome);
}
So everything is ok, but when I make the next change, alternating fgets and scanf_s (instead of doing all fgets first and then scanf_s):
printf("\n Insira o nome da primeira pessoa: ");
fgets(pessoa1.nome, 1000, stdin);
printf("\n Insira a idade da primeira pessoa: ");
scanf_s("%d", &pessoa1.idade);
printf("\n Insira o nome da segunda pessoa: ");
fgets(pessoa2.nome, 1000, stdin);
printf("\n Insiraa idade da segunda pessoa: ");
scanf_s("%d", &pessoa2.idade);
printf("\n Insira o nome da terceira pessoa: ");
fgets(pessoa3.nome, 1000, stdin);
printf("\n Insira a idade da terceira pessoa: ");
scanf_s("%d", &pessoa3.idade);
printf("\n Insira o nome da quarta pessoa: ");
fgets(pessoa4.nome, 1000, stdin);
printf("\n Insira a idade da quarta pessoa: ");
scanf_s("%d", &pessoa4.idade);
printf("\n Insira o nome da quinta e ultima pessoa: ");
fgets(pessoa5.nome, 1000, stdin);
printf("\n Insira o nome da quinta e ultima pessoa: ");
scanf_s("%d", &pessoa5.idade);
When I run the code, I can type the first person’s name, the first person’s age, but it jumps to the second person’s age (I can’t type the name). The same happens to other people. Why it happens?