c语言 - 未声明的错误'listaCliente'(首次在此函数中使用)



我不能运行代码,因为它给出了标题中提到的错误,但我在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);
^^^^

格式字符串的前导空格允许跳过输入缓冲区中的空白字符。

最新更新