Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Kairo Gabriel

era pra escrever 5 nomes e registro mais ta pulando pra escrever o seg

Recommended Posts

to tentando fazer um programa aki so olha aki tipo era pra escrever 5 nomes e registro mais ta pulando pra escrever o segundo nome so escreve o primeiro e to precisando colocar uma função pesquisa por nome,e Remoção por nome ajuda ai galera muito obrigado

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define TAM 5
struct reg{
      char nome[40];
      float peso, altura;
      int idade;
   }A;

//Funçao inserir dados
void inserir(reg A[]){
    int i;
    for (i = 0; i < TAM; i++){
   printf("Entre com seu nome\n");      
   gets(A[i].nome); 
   //fflush(stdin);
   printf("Entre com seu peso\n");
   scanf("%f",&A[i].peso);
   printf("Entre com sua altura\n");
   scanf("%f",&A[i].altura);
   printf("Entre com sua idade\n");
   scanf("%d",&A[i].idade); 
    }    
}


//Função mostar dados
void mostrar(reg A[]){  
      int i;
    for (i = 0; i < TAM; i++){ 
     printf("\n Nome   = %s\n",A[i].nome);          
     printf(" Peso   = %.2f\n",A[i].peso);
     printf(" Altura = %.2f\n",A[i].altura);
     printf(" Idade  = %d\n\n",A[i].idade);    
    }
    }
//Programa principal
int main(){
  char op; 
    struct reg A[TAM]; 
    do{    
            printf("\n Escolha uma das opçoes:\n");
              printf(" i - Inserir dados\n");
              printf(" m - Mostrar dados\n");
              printf(" s - Sair\n");
             fflush(stdin);        
              op = getche();
              printf("\n\n");

              system("CLS");

            if (op == 'i' || op == 'I')
                inserir(A);
            else if(op == 'm' || op == 'M') 
                mostrar(A);
            else
                printf(" Voce escolheu sair do programa\n\n");
}
 while(op == 'i' || op =='I' ||op == 'm' || op == 'M');

   system("PAUSE");
   return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

O comando "fflush(stdin)" está como comentário, por que?

Ele deveria estar antes da leitura do nome para limpar o buffer.

 

printf("Entre com seu nome\n");
   fflush(stdin);   
   gets(A[i].nome);

 

Faça isso e retorne aqui, caso o problema continue. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu costumo usar o fflush(stdin); antes do scanf("...",&variavel);

existem diversas maneiras pra isso, porem nao estou lembrado agora,

mas sempre que você for utilizar variaveis do tipo caracter, recomendo o uso de fflush e a leitura do arquivo com o scanf...

 

eu nao recomendo isso, mas eu por relaxo uso o fflush() toda vez que é necessário o scanf ou gets() até mesmo pra variaveis de tipos nao char...;P

Compartilhar este post


Link para o post
Compartilhar em outros sites

Maikon, seja um pouco consistente no que recomenda:

 

mas sempre que você for utilizar variaveis do tipo caracter, recomendo o uso de fflush e a leitura do arquivo com o scanf...

eu nao recomendo isso, mas eu por relaxo uso o fflush() toda vez que é necessário o scanf ou gets() até mesmo pra variaveis de tipos nao char...

 

Isso confunde os iniciantes.

Aqui, via de regra, o pessoal mais antigo sempre vai pedir que tirem coisas como fflush(stdin) e gets do código. Normalmente o uso disso vem de algum vício de livro ou professor. Tem até uns tópicos discutindo a coisa mais a fundo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.