Olá.
Estou tendo o seguinte problema: Quando executo o programa abaixo, a primeira vez que chamo a função para completar minha estrutra não ocorre nenhum problema, porém, a partir da segunda vez, a linha impressa "Informe o nome do funcionário: " não espera eu escrever algo para armazenar, ele apenas imprime o seguinte:
"Informe o nome do funcionário:"
"Informe o enedereço do funcionário:"
e o que eu gostaria que ocoresse era
"Informe o nome do funcionário: " e que após isso o programa esperasse eu digitar o nome, o que não está ocorrendo, pois o programa apenas imprime e vai direto para o próximo comando de print sem executar o fgets.
Alguém sabeira me informar o problema que está ocorrendo?
#include<stdio.h>
typedef struct{
int dia;
int mes;
int ano;
}data;
dados leitura(){
dados p1;
fflush(stdin);
printf("Informe o nome do funcionario: \n");
fgets(p1.nome,100,stdin);
printf("Informe o endereco do funcionario: \n");
fgets(p1.endereco,100,stdin);
printf("Informe o salario que o funcionário recebe: \n");
scanf("%f",&p1.salario);
printf("Informe o telefone de contato do funcionario: \n");
scanf("%f", &p1.telefone);
printf("Informe o dia de nascimento do funcionario: \n");
scanf("%d", &p1.nascimento.dia);
printf("Informe o mes de nascimento do funcionario: \n");
scanf("%d", &p1.nascimento.mes);
printf("Infome o ano de nascimento do funcionario: \n");
scanf("%d", &p1.nascimento.ano);
return p1;
}
int main(){
dados recursoshumanos[5],maiorsal[1];
int i;
maiorsal[1].salario=0;
for(i=0;i<5;i++){
recursoshumanos[i]=leitura();
if((recursoshumanos[i].salario>maiorsal[1].salario)||(maiorsal[1].salario==0))
maiorsal[1]=recursoshumanos[i];}
printf("Os dados do funcionario de maior salario sao: Nome: %s\n Endereco: %s\n Salario %f\n Telefone %f Data de nascimento %d %d %d \n\n",
maiorsal[1].nome,maiorsal[1].endereco,maiorsal[1].salario,maiorsal[1].telefone,maiorsal[1].nascimento.dia,maiorsal[1].nascimento.mes,maiorsal[1].nascimento.ano);