Vetores de Struct em C
Este documento detalha a criação e manipulação de vetores de structs em linguagem C, fornecendo exemplos práticos e abordando diversas operações comuns.
Conceito e Representação
Um vetor de structs é uma estrutura de dados que armazena um conjunto de registros (structs) em posições sequenciais de memória. Cada posição do vetor contém uma instância da struct, podendo armazenar diferentes tipos de dados.
Declaração e Inicialização
A declaração de um vetor de structs envolve definir o tipo de struct e, em seguida, declarar um array desse tipo. A inicialização consiste em atribuir valores padrão aos membros de cada struct no vetor.
typedef struct {
char nome[200];
int idade;
float salario;
} Funcionario;
Funcionario func[10];
for(i=0; i<10; i++) {
strcpy(func[i].nome, "NULL");
func[i].idade = 0;
func[i].salario = 0.0;
}
Preenchimento e Impressão
O preenchimento do vetor de structs é realizado utilizando um loop for para acessar cada posição e inserir dados. A impressão também utiliza um loop para iterar pelas posições e exibir os dados de cada struct. A sintaxe para acessar membros individuais é nome_vetor_struct[indice].nome_membro_struct.
Acesso e Modificação Individual
É possível acessar e modificar membros individuais de uma struct dentro do vetor usando a sintaxe de acesso: nome_vetor_struct[indice].nome_membro_struct.
Busca de Elementos
A busca por um elemento específico dentro do vetor pode ser realizada comparando os membros da struct com o valor procurado. A comparação de strings requer o uso da função strcmp.
Busca por Faixas de Valores
Também é possível buscar elementos dentro de um intervalo de valores, como no exemplo abaixo:
for(i=0; i<10; i++) {
if((func[i].idade>=18)&(func[i].idade<=30)) {
// Imprime informações do funcionário
}
}
Exemplo Completo
Um exemplo completo com uma struct Aluno que demonstra inicialização, preenchimento, impressão e busca por nome e faixa de notas é apresentado no documento original.
Considerações Adicionais
O documento original também aborda questões sobre declaração de vetores de structs para uso em múltiplas funções, bem como a solução de problemas relatados em comentários, incluindo como lidar com elementos iguais e a remoção de dados.