📝 Em C, um struct (ou estrutura) é um tipo de dado que permite agrupar diferentes variáveis de tipos diferentes em uma única unidade. Ele é usado para criar novos tipos de dados personalizados, nos quais é possível armazenar informações relacionadas em campos diferentes.
Um struct é definido usando a palavra-chave “struct” seguida pelo nome da estrutura e seus campos entre chaves. Cada campo possui um nome e um tipo de dado associado.
✍️ Aqui está um exemplo de como definir e usar um struct em C:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
#include <stdio.h> // Definição da struct struct Pessoa { char nome[50]; int idade; float altura; }; int main() { // Declaração de uma variável do tipo Pessoa struct Pessoa pessoa1; // Atribuição de valores aos campos da struct strcpy(pessoa1.nome, "João"); pessoa1.idade = 25; pessoa1.altura = 1.75; // Impressão dos valores dos campos da struct printf("Nome: %s\n", pessoa1.nome); printf("Idade: %d\n", pessoa1.idade); printf("Altura: %.2f\n", pessoa1.altura); return 0; } |
🛒 Cadastrando produtos…
Implementação em Linguagem C de um pequeno cadastro de produtos utilizando struct.
CÓDIGO:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
#include <stdio.h> #include <stdlib.h> #include <string.h> // Define um valor máximo para o número de produtos #define MAX 10 // Define uma estrutura para representar um produto typedef struct { int codigo; char descricao[30]; float preco; int quantidade; } Produto; // Declaração das funções void inicializar(void); void incluir(int, char *descricao, float, int); void alterar(int, char *descricao, float, int); void excluir(int); void imprimir(void); // Declaração do array de produtos Produto produto[MAX]; // Função para inicializar os produtos void inicializar(){ // Percorre o array de produtos for (int codigo = 0; codigo < MAX; codigo++) { // Define os campos da estrutura do produto como vazios ou 0 strcpy(produto[codigo].descricao, ""); produto[codigo].codigo = codigo; produto[codigo].preco = 0.0; produto[codigo].quantidade = 0; } } // Função para incluir um produto void incluir(int codigo, char *descricao, float preco, int quantidade){ // Verifica se o código está fora da faixa ou se já está cadastrado if (codigo > MAX || strcmp(produto[codigo].descricao, "") != 0) printf("Erro na inclusao | Codigo ja cadastrado ou fora da faixa.\n"); // Verifica se a quantidade é menor que zero else if (quantidade < 0) printf("Erro na inclusao | Quantidade menor que zero.\n"); else { // Atribui os valores aos campos da estrutura do produto strcpy(produto[codigo].descricao, descricao); produto[codigo].preco = preco; produto[codigo].quantidade = quantidade; printf("Inclusao realizada com sucesso: %s. \n", descricao); } } // Função para alterar um produto void alterar(int codigo, char *descricao, float preco, int quantidade){ // Verifica se o código não está cadastrado ou está fora da faixa if (codigo > MAX || strcmp(produto[codigo].descricao, "") == 0) printf("Erro na alteracao | Codigo nao cadastrado ou fora da faixa.\n"); // Verifica se a quantidade é menor que zero else if (quantidade < 0) printf("Erro na altercao | Quantidade menor que zero.\n"); else { // Atribui os novos valores aos campos da estrutura do produto strcpy(produto[codigo].descricao, descricao); produto[codigo].preco = preco; produto[codigo].quantidade = quantidade; printf("Alteracao realizada com sucesso: %s. \n", descricao); } } // Função para excluir um produto void excluir(int codigo){ // Armazena a descrição do produto a ser excluído char desc[20]; strcpy(desc, produto[codigo].descricao); // Define os campos da estrutura do produto como vazios ou 0 strcpy(produto[codigo].descricao, ""); produto[codigo].codigo = codigo; produto[codigo].preco = 0.0; produto[codigo].quantidade = 0; printf("Exclusao realizada com sucesso: %s! \n", desc); } // Função para imprimir a lista de produtos void imprimir(){ printf("\n%-4s %-20s %-6s %-4s \n", "COD", "DESC", "PRECO", "QTDE"); printf("%-4s %-20s %-6s %-4s \n", "---", "--------------------", "------", "----"); // Percorre o array de produtos for (int i = 0; i < MAX; i++){ // Verifica se o produto está cadastrado if(strcmp(produto[i].descricao, "") != 0) printf("%-4d %-20s %-6.2f %-4d \n", produto[i].codigo, produto[i].descricao, produto[i].preco, produto[i].quantidade); } printf("\n"); } // Função principal int main(void) { // Inicializa os produtos inicializar(); // Inclui alguns produtos incluir(0, "Pizza Pronta", 15.50, 250); incluir(1, "Azeite de Oliva", 19.99, 50); incluir(2, "Massa Caseira", 4.95, 300); incluir(2, "Massa Caseira Fina", 3.95, 30); // Imprime a lista de produtos imprimir(); // Altera um produto alterar(2, "Massa Caseira", 2.95, 30); // Imprime a lista de produtos novamente imprimir(); // Exclui um produto excluir(1); // Imprime a lista de produtos novamente imprimir(); // Aguarda a entrada do usuário antes de finalizar o programa system("pause"); return 0; } |
—
SAÍDA:
—
*Atualizado em 13 de dezembro de 2023