Jump to content
Fórum Script Brasil
  • 0

Erro em algumas linhas


Question

Olá. Sou estudante e comecei recentemente. Eu tenho que fazer um trabalho, só que ao compilar, está sendo identificado um erro. alguém poderia me dizer qual o erro?

O programa é bem simples e, como não vimos strings, foi pedido que usássemos char para nomes, cadastrando apenas uma letra. E as variáveis serão substituídas sempre que for cadastrado algo. Eu ainda não continuei porque fica dando erro na parte do case 1, que está em vermelho. Ele disse que estou usando %d, que é pra uma variável inteira, para um endereço reservado para valores do tipo int *. Sendo não faz sentido dar esse erro, sendo que a variável é do tipo int e %d é do tipo int. Alguém poderia me dizer o que tem de errado. Tem uns outros erros que eu já identifiquei, mas só esse que eu não sei como corrigir. 

 

#include<stdio.h>

void main(){
    int opcao = 1, opcao1, opcao2, opcao3, idade, contato;
    char nome;
    while (opcao != 4){
        printf("\nLivraria Assis\n");
        printf("\nMenu de Clientes - 1;\n");
        printf("Menu de Livros - 2;\n");
        printf("Livros Vendidos - 3\n");
        printf("Sair do programa - 4.\n");
        scanf("%d", &opcao);
    
        switch (opcao){
    
            case 1:
            printf("\nMenu de Clientes\n");
            while (opcao1 != 3){
                printf("\nCadastro de Cliente - 1;");
                printf("\nVizualizar Cliente Cadastrado - 2");
                printf("\nRetornar ao Menu Principal - 3");
                scanf("%d", opcao1);
                if (opcao1 == 1){
                    printf("\nCadastro de Cliente\n");
                    printf("\nDigite o nome do cliente: ");
                    scanf("%c", &nome);
                    printf("\nDigite a idade do cliente: ");
                    scanf("%d", idade);
                    printf("\nDigite o número de contato do cliente: ");
                    scanf("%d", &contato);
                }
                else{
                    if (opcao1 == 2){
                        printf("\nCliente Cadastrado\n");
                        printf("\nNome: %c", nome);
                        printf("\nIdade: %d", idade);
                        printf("Contato: %d", contato);
                    }
                    else{
                       if (opcao1 == 3){
                           break;
                       }
                       else{
                           printf("Digite um valor válido");
                       }
                       
                       
                    }
                    
                    
                }
            }
            

            break;
            case 2: 
            printf("\nMenu de Livros\n");

            break;
            case 3:
            printf("\nLivros Vendidos\n");

            break;
            default:
            printf("Escolha uma das opções válidas");
            break;
    }
    }
    

}

Link to post
Share on other sites

1 answer to this question

Recommended Posts

  • 0
4 horas atrás, Boey-sama disse:

scanf("%d", opcao1);

O correto é scanf("%d", &opcao1); O operador é utilizado para passar o endereço de memória da variável, em vez de somente o seu valor. A função scanf espera o endereço da variável opcao (um ponteiro do tipo int *) para que consiga alterar o seu valor, mas você está passando apenas o seu valor (tipo int).

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      148875
    • Total Posts
      644917
×
×
  • Create New...