Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Error 'listaCliente' undeclared (first use in this function)

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);

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

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");
}

>Solution :

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.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading