0
I have a struct
typedef struct
{
int id;
char nome[50];
int tipoUser;
float vencimentos;
int id_clinica;
} Utilizador;
into which I enter values using the following code:
void criarCliente(Utilizador *utilizador, int n)
{
printf("NOME: ");
fgets(utilizador->nome, 50, stdin);
utilizador->nome[strlen((utilizador->nome) - 1)] = '\0';
printf("Vencimentos: ");
scanf("%f", &utilizador->vencimentos);
printf("tipo de user(1-Medico,2-Enfermeiro,3-Funcionario) ");
scanf("%d", &utilizador->tipoUser);
utilizador->id = n + 1;
printf("id da clinica a que está associada ");
scanf("%d", &utilizador->id_clinica);
}
boolean inserirCliente(Utilizador *utilizadores, int *n, Utilizador utilizador)
{
if (*n > TAMUtilizador)
{
return false;
}
utilizadores[*n] = utilizador;
(*n)++;
listarClientesAtivos(utilizadores,*n);
return true;
}
my function listClientesAtivos:
void listarClientesAtivos(Utilizador *utilizadores,int n)
{
system("cls");
for (int i = 0; i < n; i++)
{
printf("%d id =|", utilizadores[i].id);
printf("%s NOME =|", utilizadores[i].nome);
printf("%f VENCIMENTOS=|", utilizadores[i].vencimentos);
printf("%d IDCLINICA=|\n", utilizadores[i].id_clinica);
}
}
instead of reversing the inserted clients, returns :
1 id =| NAME =|0 SALARIES=|1073741824 IDCLINICA=|
I’d like to understand my mistake
You have set typeUser; as int then change
scanf("%f", &utilizador->tipoUser);
forscanf("%d", &utilizador->vencimentos);
. Idemparaid_clinica
.vencimentos
is float so changeprintf("%d VENCIMENTOS=|", utilizadores[i].vencimentos);
forprintf("%f VENCIMENTOS=|", utilizadores[i].vencimentos);
. By the way these your printf are confused, the value should not be after the text?– anonimo
are confused yes, because it was just to see where would be printed that value in a rudimentary way, the original idea is just to have "|" , anyway I changed what Oce said and works, everything but the string "name" ...
– Tiago