Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda no meu codigo (iniciante)


Gabriel Custodio

Pergunta

Olá programadores, recentemente embarquei nessa via da programaçao, e gostaria de ajuda para resolver o seguinte problema:

Codigo a seguir:

#include <stdio.h>

int main(){
   char nome, profissao, cpf, aniversario, email;
   int pergunta1;

   printf("O que voce deseja fazer?\n");
   printf("[1]Preencher cadastro\n");
   printf("[2]Sair\n");
   scanf("%d", pergunta1);

   if (pergunta1 == 1){

    setbuf(stdin, NULL);
     printf("\n Qual é o seu nome completo?\t");
     scanf(" %[^\n]s",&nome);

     printf("\n Qual é sua data de nascimento? (dd/mm/aaaa)\t");
     scanf(" %[^\n]d",&aniversario);

     printf("\n Qual é o seu email?\t");
     scanf(" %[^\n]s",&email);

     printf("\n Qual o seu CPF? (Use apenas números.)\t");
     scanf(" %[^\n]s", &cpf);

     printf("\n Qual é a sua profissão?\t");
     scanf(" %[^\n]s",&profissao);

     printf("Confira as informaçoes fornecidas:\n");
     printf("Nome: %s\n", nome);
     printf("Aniversario: %s\n", aniversario);
     printf("Email: %s\n", email);
     printf("Profissao: %s\n", profissao);
     printf("CPF: %s\n", cpf);

     printf("[1]Prosseguir\n");
     printf("[2]Editar\n");
    int pergunta2;
     scanf("%d", pergunta2);

      if(pergunta2 = 1)
       printf("Ainda não existe para onde prosseguir\n");

      else if(pergunta2 = 2){
       printf("Qual termo esta errado?\n\n");
       printf("[1]Nome: %s\n", nome);
       printf("[2]Aniversario: %s\n", aniversario);
       printf("[3]Email: %s\n", email);
       printf("[4]Profissao: %s\n", profissao);
       printf("[5]CPF: %s\n", cpf);
      int pergunta3;
       scanf("%d", pergunta3);

      if(pergunta3 == 1){
       printf("Corrija o seu nome completo: ");
       scanf(" %[^\n]s", nome);
       printf("Confira as informaçoes fornecidas:\n");
       printf("Nome: %s\n", nome);
       printf("Aniversario: %s\n", aniversario);
       printf("Email: %s\n", email);
       printf("Profissao: %s\n", profissao);
       printf("CPF: %s\n", cpf);
      }
      else if(pergunta3 == 2){
       printf("Corrija o seu aniversario: ");
       scanf(" %[^\n]s", aniversario);
       printf("Confira as informaçoes fornecidas:\n");
       printf("Nome: %s\n", nome);
       printf("Aniversario: %s\n", aniversario);
       printf("Email: %s\n", email);
       printf("Profissao: %s\n", profissao);
       printf("CPF: %s\n", cpf);
      }

      else if(pergunta3 == 3){
       printf("Corrija o seu email: ");
       scanf(" %[^\n]s", email);
       printf("Confira as informaçoes fornecidas:\n");
       printf("Nome: %s\n", nome);
       printf("Aniversario: %s\n", aniversario);
       printf("Email: %s\n", email);
       printf("Profissao: %s\n", profissao);
       printf("CPF: %s\n", cpf);
      }
      else if(pergunta3 == 4){
       printf("Corrija a sua profissao: ");
       scanf(" %[^\n]s", profissao);
       printf("Confira as informaçoes fornecidas:\n");
       printf("Nome: %s\n", nome);
       printf("Aniversario: %s\n", aniversario);
       printf("Email: %s\n", email);
       printf("Profissao: %s\n", profissao);
       printf("CPF: %s\n", cpf);

      }
      else if(pergunta3 == 5){
       printf("Corrija o seu CPF: ");
       scanf(" %[^\n]s", email);
       printf("Confira as informaçoes fornecidas:\n");
       printf("Nome: %s\n", nome);
       printf("Aniversario: %s\n", aniversario);
       printf("Email: %s\n", email);
       printf("Profissao: %s\n", profissao);
       printf("CPF: %s\n", cpf);

      }
      else if(pergunta3 != 1 || pergunta3 != 2 || pergunta3 != 3 || pergunta3 != 4 || pergunta3 != 5)
       printf("Comando invalido");

    }

      else if(pergunta2 != 1 || pergunta2 != 2)
       printf("Comando invalido");


   }

   else if(pergunta1 == 2)
    printf("A porta e logo ali");

   else if(pergunta1 != 1 || pergunta1 != 2)
    printf("Comando invalido");


   return 0;
}

 

Consigo dar build and run, porem após o primeiro scanf o programa para de funcionar

imagem a baixo:

image.thumb.png.0b3aeed95d5a2a4f6ae21328ee7f3b20.png

 

Muito obrigado desde já, e claro sintam-se livres para modificar o codigo e relatar problemas, ou melhorias que podem ser feitas, lembrando que eu programo a exatos 2 dias!

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

um char é uma só letra, você não pode guardar uma string que é um punhado de letras em um único char, você precisa do mesmo punhado de chars, ou incluso mais... você precisa de um array.
Em vez de:

char nome, profissao, cpf, aniversario, email;

 

Você precisa de:

char nome[100], profissao[100], cpf[50], aniversario[30], email[100];


E para ler não precisa por & adiante como de um char se tratasse:

     printf("\n Qual é o seu nome completo?\t");
     scanf(" %[^\n]s",nome);

 

Se for ler vários strings um depois do outro:

    setbuf(stdin, NULL);
     printf("\n Qual é o seu nome completo?\t");//Prove algo como: Raul alambique
     scanf(" %[^\n]%*c",nome);

     printf("\n Qual é sua data de nascimento? (dd/mm/aaaa)\t");//prove algo como: 16/02/1977
     scanf(" %s%*c",&aniversario);

     printf("\n Qual é o seu email?\t");//prove algo como: gato@malvado.com
     scanf(" %s%*c",&email);

Se a string tiver espaços no meio use : %[^\n]
Se a string não tiver espaços no meio como um aniversario ou um email use o %s normal
O %*c ignora o enter, faz que suas leituras sejam corretas pois evita a entrada de lixo no buffer, causado ao pulsar enter, pois esse é tido também como um char, e vai parar no buffer junto com as outras letras, o especificador %*c, ao final, evita que a ultima letra pulsada, que é sempre o enter, seja inserida no buffer, evitando assim problemas de leitura.

Editado por vangodp
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...