Jump to content
Fórum Script Brasil
  • 0

inserção de dados em Struct


LacosTTe

Question

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 to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 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.!

Edited by Prog_Junior
Link to comment
Share on other 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 to comment
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
      152.2k
    • Total Posts
      652k
×
×
  • Create New...