我不能运行代码,因为它给出了标题中提到的错误,但我在main中声明了它。我被卡住了几个小时,我解决不了这个问题
main.c,这里是我声明"listaCliente">
int main()
{
Cliente* listaCliente = lerBaseDeDados();
menuPrincipal(listaCliente);
}
client .c//菜单,基本上这将是一个菜单来管理客户端(添加删除咨询),但我不明白为什么它给了我一个错误在行menuPrincipal(listaCliente);
void submenuGGestaoClientes()
{
int continuar=-1;
int aux=-1;
do {
printf("---------------- Gestao Clientes ----------------nn");
printf("1- Adicionar Clienten");
printf("2- Remover Cliente n");
printf("3- Consultar Clientes n");
printf("0- Retroceder nn");
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 ----------------nn");
printf("1- Adicionar Clienten");
printf("2- Remover Cliente n");
printf("3- Consultar Clientes n");
printf("0- Retroceder nn");
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 validan");
break;
}
printf("n");
system("pause");
} while(continuar != 0);
}
client .c function "字典"这是一个添加客户数据的函数
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");
}
至少在函数submenuGGestaoClientes
中声明为
void submenuGGestaoClientes();
使用了未声明的名称listaCliente
:
adicionar(listaCliente);
或
menuPrincipal(listaCliente);
也许你指的是下面的函数声明
void submenuGGestaoClientes( Cliente* listaCliente );
注意,这样的呼叫
fflush(stdin);
有未定义的行为。删除这些语句
也重写scanf
的调用
scanf("%c", &auxNome);
scanf(" %c", &auxNome);
^^^^
格式字符串的前导空格允许跳过输入缓冲区中的空白字符。