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

inserção de dados em Struct


LacosTTe

Pergunta

olá pessoal, estou com algum problema na inserção de dados em uma struct.

segue abaixo a struct.

int main (void){
int i = 0;
int dim = 3;
struct {
      char Nome;
      char cpf;
      char rg; 
      char endereco;
      char fone;      
   } comprador[dim];
e aqui a parte de inserção de dados nela.
printf("\n NOME:\t");    scanf("%c",&comprador[i].Nome);
        printf("\n CPF:\t");       scanf("%c",&comprador[i].cpf);
        printf("\n RG:\t");        scanf("%c",&comprador[i].rg);
        printf("\n ENDERECO:\t");    scanf("%c",&comprador[i].endereco);
        printf("\n TELEFONE:\t");     scanf("%c",&comprador[i].fone);
        i++;

OK. Compila sem erros....mas quando no console vou inserir dados, simplesmente alguns campos não da pra preencher...ele pula pra outros campos, sem que eu possa setar os valores...alguém sabe porque? E se alguém tem outra solução. Com o GETC eu consegui que ele não pulasse, mas o GETC pegava a primeira posição da string só.

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Olá LacosTTe, eu percebi alguns erros no seu código.

1) Pelo que eu sei você deve declarar a sua struct em cima do int main();

struct comprador {
      char Nome;
      char cpf;
      char rg;
      char endereco;
      char fone;      
   }
E dentro do main declarar uma variavel do tipo estrutura(vetor), para poder armazenar em cada posição do vetor as informações da sua struct.
int main ()
 struct comprador vet[100]; // vetor de 100 posições do tipo estrutura,chamada comprador. 
...
2) Você deve definir o tamanho de cada registro char, pois do jeito que está, cada informação dentro da estrutura terá apenas "um" caracter. Exemplo correto:
struct comprador {
      char Nome[30];
      char cpf[9];
      char rg[15];
      char endereco[100];
      char fone[10];      
   }
Para ler dentro do main, utilize fgets para ler uma string e não scanf, utilize scanf para ler um int.
printf("\n NOME:\t");
     fflush(stdin);   
     fgets(vet[i].nome,30,stdin);
     printf("\n CPF:\t");      
     fflush(stdin);   
     fgets(vet[i].cpf,9,stdin);
     printf("\n RG:\t");        
     fflush(stdin);   
     fgets(vet[i].rg,15,stdin);
     printf("\n ENDERECO:\t");    
     fflush(stdin);   
     fgets(vet[i].endereco,100,stdin);
     printf("\n TELEFONE:\t");     
     fflush(stdin);   
     fgets(vet[i].cpf,10,stdin);
     i++;

Bom espero poder ter ajudado, também sou novo em programação C, e caso eu tenha algum erro, aceito na boa, ser corrigido.!

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

  • 0
Olá LacosTTe, eu percebi alguns erros no seu código.

1) Pelo que eu sei você deve declarar a sua struct em cima do int main();

struct comprador {
      char Nome;
      char cpf;
      char rg;
      char endereco;
      char fone;      
   }
E dentro do main declarar uma variavel do tipo estrutura(vetor), para poder armazenar em cada posição do vetor as informações da sua struct.
Na verdade, a maneira que ele fez é válida:
struct {
       ....conteudo....
   } comprador[dim];
É possível declarar uma variável ou vetor na própria estrutura, colocando o nome da variável após a declaração da estrutura. Também, quando se declara todas as variáveis de tal tipo na própria estrutura, não é necessário colocar um identificador para a estrutura. Forma geral:
struct identificador {
     conteudo...
} variavel, variavel2, variavel3;
Uma coisa que está errada nesta estrutura é
comprador[dim];

Pelo que eu leio por aí, acredito que não seja recomendado, ou até mesmo não seja válido declarar um vetor com uma variável identificando o tamanho do mesmo.

O resto nem olhei.

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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...