Stock Laboratorio em C

So_SiMpLe_

Power Member
Boas pessoal! :confused:
Tou aqui com um problema.
Tenho um trabalho para fazer de gestao de stocks de laboratorio. So que tou aqui a empancar com uma estrutura.

O seguinte excerto:

typedef struct
{
char nome_utente[60];
long int numero_bi;
char morada_utente[60];
long int telefone_utente;
}utente;

contador_utentes = 0;

utente utente[10];

Tenho problemas aqui, porque ao compilar o programa primeiro dá erro com o contador_utentes (Defaulting to int) e nao percebo porque, o objectivo de tar sozinho é para abranger todas as funções.
Depois dá erro com o utente, alias 3 erros:
-illegal use of type name 'utente'
-operands of + have illegal types 'untente' and 'int'
-type error:pointer expected
Não tou msm a perceber como resolver isto e pela nOObidade :lol: da questao não consigo passar daqui.
Alguem me pode ajudar please?
Abraço!
 
Código:
[B]int[/B] contador_utentes = 0; // falta declarares a variável do tipo int

utente [B]list_utente[10];[/B]    // nao podes ter variáveis com o mesmo nome de estruturas.
 
Boas!
Desde já obrigado!
O problema do contador já nao da erro, mas o utente ainda dá o mesmo.

tenho nas funções quando vai buscar o nome_utente tenho assim:
gets (utente[contador_utentes].nome_utente);

é aqui que ele me da aqueles erros que referi acima.
:mad:
Abraço!
 
Boas!
Bem pelo menos a parte dos utentes já funca!
Tenho é um problema agora: Quando consulto os dados, aparece numeros como 43000 e tal para o nome e morada que tao em %d e 0 (zero) para os long ints do numero de telefone e BI.
Isto em vez de aparecer o nome, morada, telefone e BI mesmo do utente.
Deixo aqui o codigo para verem:

Código:
////REGISTO DE UTENTES
int regist_utente (void)
{
 system("cls");
 printf("nome?");
 fflush(stdin);
 gets(list_utente[contador_utentes].nome_utente);
 printf("morada?");
 fflush(stdin);
 gets(list_utente[contador_utentes].morada_utente);
 printf("telef?");
 scanf("%ld",list_utente[contador_utentes].telefone_utente);
 printf("bi?");
 fflush(stdin);
 scanf("%ld",list_utente[contador_utentes].numero_bi);
 contador_utentes++;
 system("pause");
 return gest_utente();
}
 
////INFO DE UTENTES
 
int info_utente (void)
{
int numero;
system("cls");
printf("introduza o numero de utente: ");
scanf ("%d", &numero);
printf("%d\n", list_utente[numero-1].nome_utente);
printf("%d\n", list_utente[numero-1].morada_utente);
printf("%ld\n", list_utente[numero-1].telefone_utente);
printf("%ld\n", list_utente[numero-1].numero_bi);
system("pause");
return gest_utente();
}

Obrigado pessoal!!
Abraço!
 
Última edição pelo moderador:
////INFO DE UTENTES

int info_utente (void)
{
int numero;
system("cls");
printf("introduza o numero de utente: ");
scanf ("%d", &numero);
printf("%d\n", list_utente[numero-1].nome_utente);
printf("%d\n", list_utente[numero-1].morada_utente);

printf("%ld\n", list_utente[numero-1].telefone_utente);
printf("%ld\n", list_utente[numero-1].numero_bi);
system("pause");
return gest_utente();
}

Então queres imprimir uma string e metes %d? Acho melhor meteres %s.
 
É isso msm! tks! :D
já agora o prog ta.me a dar um erro quando pede o BI do tipo:

exception segment violation
Adress 0x4054bd

isto aparece noutra janela.
Sabem do que se trata?
Abraço!
 
Isso volta ao menu de gestao de utentes, onde tem mais opcoes:

Código:
int gest_utente (void)
{
 int utente;
 do{
 system("cls");
  printf("                   GESTAO DE UTENTES\n\n\n");
  printf("                1- Ver informacao de um utente\n\n");
  printf("                2- Registar novo utente\n\n");
  printf("                3- Alterar dados do utente\n\n");
  printf("                4- Listar informacao de utentes\n\n");
  printf("                5- Regressar ao menu anterior\n\n\n");
  printf("                       Escolha uma opcao: ");
  scanf("%d" , &utente);

 switch (utente)
 {
  case 1 : info_utente();
  break;
  case 2 : regist_utente();
  break;
  case 3 : printf("oi"); //alterar_utente();
  break;
  case 4 : printf("oi"); //listar_utente();
  break;
  case 5 : main();
  break;
 }
}while (utente<1 || utente>5);
return 0;
}
onde tenho o printf("oi"); é onde ainda nao fiz as funcoes correspondentes á alteração e lista de utentes.
Abraço!

Já descobri o porquê mas nao percebo. o problema de aparecer os numero ja ficou resolvido, agora quando pede o numero de telefone, bi ou algum que possua long int, ao pedir no programa as informações, se ponho caracteres ele segue, se puser numeros ele dá esse erro. 8|. De resto ta tdo a funcar!
Alguem me pode so dar uma ajudinha?
Mto obrigado!
Cumps
 
Última edição pelo moderador:
Estou com um trabalho muito parecido, para não dizer igual, e preciso de ajuda.
Como altero os dados do utente? (pergunta para o So_SIMple_)
Sou um autêntico noob nisto...
 
Back
Topo