Dando continuidade ao nosso Curso de Programação C e ao estudo de novos tipos de dados com typedef struct, nesta aula vamos aprender como criar uma função que retorna uma struct.
Este processo é exatamente igual a uma função que retorna um valor primitivo. Neste exemplo, criamos uma variável do tipo Pessoa, lemos os dados do teclado e ao final, retornamos essa variável.
Pessoa lerPessoa(){ Pessoa p; // preencher a variável p return p; // retorna a variável p }
Código completo de exemplo de função que retorna uma variável do tipo Pessoa
#include <stdio.h> #include <stdlib.h> /* Aula 173: Como criar uma função que retorna uma struct? Código escrito por Wagner Gaspar Abril de 2021 */ typedef struct{ int dia, mes, ano; }DataNas; typedef struct{ DataNas dataNas; int idade; char sexo; char nome[100]; }Pessoa; void imprimirPessoa(Pessoa p){ printf("\tNome: %s", p.nome); printf("\tIdade: %d\n", p.idade); printf("\tSexo: %c\n", p.sexo); printf("\tData de nas.: %d/%d/%d\n", p.dataNas.dia, p.dataNas.mes, p.dataNas.ano); } // função que lê os dados de uma pessoa e retorna para quem chamou Pessoa lerPessoa(){ Pessoa p; printf("Digite seu nome: "); fgets(p.nome, 100, stdin); printf("Digite sua idade: "); scanf("%d", &p.idade); scanf("%c"); printf("Digite f ou m para o sexo:"); scanf("%c", &p.sexo); printf("Digite sua data de nascimento no formato dd mm aaaa:"); scanf("%d%d%d", &p.dataNas.dia, &p.dataNas.mes, &p.dataNas.ano); return p; } int main() { Pessoa pessoa; pessoa = lerPessoa(); // a variável pessoa recebe uma pessoa da função lerPessoa. imprimirPessoa(pessoa); return 0; }