• 0
Sign in to follow this  
Gabriel Custodio

Ajuda no meu codigo (iniciante)

Question

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!

Share this post


Link to post
Share on other sites

1 answer to this question

Recommended Posts

  • 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: [email protected]
     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.

Edited by vangodp

Share this post


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.

Sign in to follow this