I can't run the code because it gives the error mentioned in the title, but I declared it in main. I'm stuck for a few hours and I can't solve this
main.c , here is where I declare the "listaCliente"
int main()
{
Cliente* listaCliente = lerBaseDeDados();
menuPrincipal(listaCliente);
}
Cliente.c // menu , basically this is going to be a menu to manage clients (add remove consult), but I don't understand why it's giving me an error in the line menuPrincipal(listaCliente);
void submenuGGestaoClientes()
{
int continuar=-1;
int aux=-1;
do {
printf("---------------- Gestao Clientes ----------------\n\n");
printf("1- Adicionar Cliente\n");
printf("2- Remover Cliente \n");
printf("3- Consultar Clientes \n");
printf("0- Retroceder \n\n");
printf("-------------------------------------------------\n");
do
{
fflush(stdin);
if(scanf("%d", &aux) != 0){
continuar = aux;
}
if(continuar < 0 || continuar > 3) {
system("cls || clear");
printf("erro, opcao invalida!\n");
printf("---------------- Gestao Clientes ----------------\n\n");
printf("1- Adicionar Cliente\n");
printf("2- Remover Cliente \n");
printf("3- Consultar Clientes \n");
printf("0- Retroceder \n\n");
printf("-------------------------------------------------\n");
}
} while(continuar < 0 || continuar > 3 );
switch(continuar)
{
case 1:
adicionar(listaCliente);
break;
case 2:
printf("Arroz");
break;
case 3:
printf("Arroz");
break;
case 0:
menuPrincipal(listaCliente); //where have the 1º error
break;
default:
printf("Digite uma opcao valida\n");
break;
}
printf("\n");
system("pause");
} while(continuar != 0);
}
Cliente.c function "adicionar" basically it's a function that will add the customer data
void adicionar(Cliente* listaCliente) {
Cliente* novoCliente = (Cliente*)calloc(1, sizeof(Cliente));
int auxInt = -1;
char auxNome, auxMorada;
int escolha = -1;
//Menu para escolher o tipo do contentor, a resposta e recolhida com um switch case
printf("Digite o nome do Cliente: \n");
scanf("%c", &auxNome);
novoCliente->nome = auxNome;
printf("Digite o numero de cartao do cliente:\n");
do {
auxInt = -1;
fflush(stdin);
if(scanf("%d", &auxInt) != 0){
novoCliente->num_cartao = auxInt;
}
if(auxInt < 0 ) {
printf("erro, Numero de cartao invalido!\n");
}
} while(auxInt < 0 );
printf("Digite o numero de cliente:\n");
do {
auxInt = -1;
fflush(stdin);
if(scanf("%d", &auxInt) != 0){
novoCliente->num_cliente = auxInt;
}
if(auxInt < 0 ) {
printf("erro, Numero de cliente invalido!\n");
}
} while(auxInt < 0 );
printf("Digite o numero de contribuinte do cliente:\n");
do {
auxInt = -1;
fflush(stdin);
if(scanf("%d", &auxInt) != 0){
novoCliente->num_cartao = auxInt;
}
if(auxInt < 0 || auxInt > 9999999) {
printf("erro, Numero de Contribuinte invalido!\n");
}
} while(auxInt < 0 );
printf("Digite a morada do Cliente: \n");
scanf("%c", &auxMorada);
novoCliente->morada = auxMorada;
listaCliente = adicionarCliente(listaCliente, novoCliente);
printf("\nAdicionado com sucesso!\n");
}
CodePudding user response:
At least within the function submenuGGestaoClientes
declared like
void submenuGGestaoClientes();
there is used the undeclared name listaCliente
:
adicionar(listaCliente);
or
menuPrincipal(listaCliente);
Maybe you mean the following function declaration
void submenuGGestaoClientes( Cliente* listaCliente );
Pay attention to that such a call
fflush(stdin);
has undefined behavior. Remove such statements.
Also rewrite this call of scanf
scanf("%c", &auxNome);
like
scanf(" %c", &auxNome);
^^^^
The leading space in the format string allows to skip white space characters in the input buffer.