Preencher uma Struct em C
Nessa aula, nós vamos aprender como preencher uma estrutura que a gente acabou de criar, um novo tipo de dado, utilizando a palavra reservada struct.
Para acessar cada campo de uma struct, basta escrever o nome da variável seguido de um ponto, ese ponto aqui é fundamental, ok?!?
Este ponto.
Basta escrever então o nome da variável seguido de um ponto e o campo desejado.
Vamos a um exemplo para ficar bem claro; olha só, imagine que a gente tenha aqui a nossa estrutura pessoa typedef struct pessoa, que possui os campos nome, sexo e idade; e aí eu dei o nome de pessoa com p maiúsculo.
Vamos criar uma variável desse tipo?
Para criar uma variável basta dizer qual é o tipo, nesse caso é pessoa com p maiúsculo, e eu chamei aqui a minha variável de um, então eu posso ter pessoa um, coloco aqui uma vírgula, pessoa dois, pessoa três e assim por diante, terminando aqui com um ponto e vírgula.
Agora eu quero acessar, eu quero preencher os campos dessas variáveis, como que eu faço?
É bastante simples, olha só, acessando um campo por vez, eu digito o nome da variável, ponto e o campo que eu quero acessar.
Se eu quisesse, por exemplo, ler com scanf, ficaria desse tipo aqui, o um é o nome da variável, o idade é o campo interno, o campo que eu quero acessar.
Se eu fosse pedir, por exemplo, para o usuário digitar a sua idade, eu posso ler usando a função scanf, vou ler um número inteiro, porque é a idade do usuário, e aí perceba que é da
mesma forma como você já deve ter aprendido, e comercial, o nome da variável, ponto, idade, o campo que você quer ler.
Lembre-se que agora a sua estrutura, o seu tipo pessoa possui vários campos diferentes, nesse exemplo aqui possui nome, sexo, idade.
Então não basta dizer o nome da variável, eu preciso colocar o ponto e especificar qual campo eu estou lendo.
Como são vários detalhes, para a gente realmente fixar isso aqui, amos ver esse exemplo funcionando no Code Blocks?
Então vem comigo!
Eu estou aqui no Code Blocks e perceba que eu tenho aqui exatamente aquele exemplo, struct typedef struct pessoa, com idade, nome e sexo; chamei de pessoa com p maiúsculo e aqui na função main, perceba que a gente pode criar agora uma variável de duas formas, você pode criar utilizando struct pessoa, abc é o nome da variável, ou você pode apenas utilizar o nome que a gente acabou de dar aqui, pessoa com p maiúsculo, então este aqui é o tipo, ABC é o nome da nossa variável.
E aí perceba que para preencher essas informações, esses campos, é exatamente da forma como você já deve ter aprendido, lendo informações do teclado.
Na linha catorze eu estou pedindo, digite o nome da pessoa, na linha quinze eu estou lendo com o scanf, eu vou ler no máximo quarenta e nove caracteres, por que quarenta e nove?
Porque o vetor nome tem tamanho cinquenta e a gente precisa de um carácter para salvar o carácter de fim de string; então eu vou ler no máximo quarenta e nove até que um enter seja pressionado; onde que eu vou salvar?
Lembra, eu estou lendo uma string, um vetor de caracteres, neste caso e exclusivamente nesse caso, eu não preciso do e comercial, então o nome da minha variável, abc, ponto nome, o campo que eu quero preencher.
Na sequência, digite sua idade, nesse caso eu não preciso me preocupar com o enter, que vai ficar no buffer do teclado, por quê?
A informação que eu vou em seguida é um número, olha só, digite sua idade, scanf, por cento d, e comercial, abc, ponto idade.
Se é um número, o que vai ficar no banco do teclado é um enter, então a função scanf vai olhar “tem alguém no buffer?” Tem.
É um número?
Não, não é; então a própria função vai retirar esse enter, vai jogar fora e vai aguardar até que um número seja pressionado.
Quando eu digito o número, aí sim eu preciso limpar o buffer, porque, olha só, eu vou digitar um número e vou pressionar enter, ao pressionar enter, o que é que eu vou ler em seguida, o sexo, aí vai chegar aqui no scanf, ele vai olhar “Tem alguém no buffer do teclado?” Tem, é o enter, então ele vai colocar o enter como sexo e eu não quero isso; então, assim que for lida a idade, eu retiro o caractere que tiver no buffer do teclado; dessa forma eu elimino aquele enter.
E aí em seguida, estamos fazendo a leitura do sexo.
Eu vou imprimir aqui a nossa “abinha” de logs apenas para apresentar para você que não tem nenhum erro no nosso programa.
Eu vou compilar e executar aqui o meu programa, perceba que ele já está aqui no printf “digite o nome da pessoa”, vou digitar aqui Maria, vou pressionar enter, “digite a idade”,vinte e cinco.
“digite o sexo”, feminino; vou pressionar enter e perceba que o nosso programa finalizou retornando zero, que é esse zero aqui, finalizou com sucesso, sem nenhum problema.
Então nessa aula você aprendeu como preencher os campos de uma struct.