Dando continuidade ao nosso Curso de Programação C e ao estudo das estruturas com typedef struct, vamos aprender nesta aula como criar uma matriz de struct.
A criação de uma matriz de qualquer tipo segue exatamente os passos que já aprendemos. Precisamos dizer o tipo da matriz, dar um nome à nossa estrutura de dados e, por fim, informar as dimensões de nossa matriz entre os pares de colchetes.
Imagine a estrutura Pessoa apresentada no código abaixo. Uma matriz com 5 linhas e 5 colunas desse tipo pode ser criada com a seguinte linha:
// matriz 5 x 5 do tipo Pessoa Pessoa pessoas[5][5];
A seguir apresentamos um trecho de código completo em C para preencher e imprimir uma matriz do tipo Pessoa
#include <stdio.h> #include <stdlib.h> /* Aula 175: Como criar uma matriz de 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("\n\tNome: %s", p.nome); printf("\tIdade: %d\n", p.idade); printf("\tSexo: %c\n", p.sexo); printf("\tData de nas.: %d/%d/%d\n\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("\nDigite 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); scanf("%c"); return p; } int main() { Pessoa pessoas[2][2]; int l, c; // preenche a matriz com pessoas lidas do teclado for(l = 0; l < 2; l++){ for(c = 0; c < 2; c++) pessoas[l][c] = lerPessoa(); } // imprime a matriz de pessoas for(l = 0; l < 2; l++){ for(c = 0; c < 2; c++) imprimirPessoa(pessoas[l][c]); } return 0; }