C Structures insert made but cannot read

Asked

Viewed 21 times

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); for scanf("%d", &utilizador->vencimentos);. Idempara id_clinica. vencimentos is float so change printf("%d VENCIMENTOS=|", utilizadores[i].vencimentos); for printf("%f VENCIMENTOS=|", utilizadores[i].vencimentos);. By the way these your printf are confused, the value should not be after the text?

  • 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" ...

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.