Projeto: Definir a Struct de Contato
Parte da seção Lógica e Fluxo do Journey de C da Coddy. Lição 50 de 63.
Desafio
FácilVocê criará uma ferramenta simples de cadastro de contatos que demonstra como structs podem organizar dados relacionados em aplicações do mundo real.
Crie um programa em C que defina uma struct Contact para armazenar informações de contato. Seu programa deve:
- Definir uma
structchamadaContactcom os seguintes membros:- Um array de caracteres
namecom tamanho 50 para armazenar o nome do contato - Um array de caracteres
phonecom tamanho 20 para armazenar o número de telefone do contato - Um array de caracteres
emailcom tamanho 40 para armazenar o endereço de e-mail do contato - Um inteiro
agepara armazenar a idade do contato
- Um array de caracteres
- Na função main:
- Crie uma variável
Contactchamadaperson - Leia os seguintes valores de entrada e atribua-os aos membros da struct usando o operador ponto:
- Leia uma string para o nome e atribua-a a
person.name - Leia uma string para o número de telefone e atribua-a a
person.phone - Leia uma string para o e-mail e atribua-a a
person.email - Leia um inteiro para a idade e atribua-o a
person.age
- Leia uma string para o nome e atribua-a a
- Depois de ler todos os valores, realize as seguintes verificações de validação:
- Se a idade for menor que 0 ou maior que 120, imprima
Invalid agee encerre o programa - Se o comprimento do número de telefone for menor que 10 caracteres, imprima
Invalid phone numbere encerre o programa
- Se a idade for menor que 0 ou maior que 120, imprima
- Se todas as validações forem aprovadas, imprima as informações de contato neste formato exato:
Contact Information:Name: [name]Phone: [phone]Email: [email]Age: [age]
- Calcule e imprima informações adicionais:
- Imprima o comprimento do nome usando
strlen()no formato:Name length: [length] - Determine a categoria de idade e imprima-a:
- Se a idade estiver entre 0 e 17:
Category: Minor - Se a idade estiver entre 18 e 64:
Category: Adult - Se a idade for 65 ou mais:
Category: Senior
- Se a idade estiver entre 0 e 17:
- Imprima o comprimento do nome usando
- Crie uma variável
Este desafio testa sua compreensão da definição de struct, da declaração de membros com tipos e tamanhos de dados apropriados, do acesso aos membros da struct usando o operador ponto, da validação de entrada e do uso de funções de string como strlen() com membros de structs. Você praticará a criação de uma estrutura de dados prática que poderia servir como base para um sistema de gerenciamento de contatos.
Experimente você mesmo
#include <stdio.h>
#include <string.h>
// TODO: Defina a struct Contact aqui
int main() {
// TODO: Crie uma variável Contact chamada person
// Ler valores de entrada
scanf("%s", /* TODO: atribuir a person.name */);
scanf("%s", /* TODO: atribuir a person.phone */);
scanf("%s", /* TODO: atribuir a person.email */);
scanf("%d", /* TODO: atribuir a person.age */);
// TODO: Escreva seu código de validação e saída abaixo
return 0;
}Todas as lições de Lógica e Fluxo
1Fundamentos de Ponteiros
O que é um Ponteiro?Declarando PonteirosO Operador de Endereço (&)O Operador de Desreferência (*)Ponteiros NULLRecapitulação: Fundamentos de Ponteiros4Projeto: Utilitário de Texto Simples
Visão Geral do ProjetoContando Caracteres2Ponteiros e Arrays
Nomes de Arrays como PonteirosElementos de Array - PonteirosAritmética de PonteirosComparando PonteirosRecapitulação: Percorrendo Arrays com Ponteiros5Ponteiros e Funções
Passagem por ValorPassando Ponteiros para FunçõesModificando Variáveis via PonteirosUm Exemplo Clássico: SwapPassando Arrays para FunçõesRecapitulação: Ponteiros como Argumentos3Arrays de Caracteres e Strings
Strings como Arrays de charO Terminador NuloEntrada de Strings com scanfUsando strlen()Usando strcpy()Usando strcat()Usando strcmp()Recapitulação: Funções Básicas de Strings6Gerenciamento de Memória
Memória Stack vs. HeapAlocação Dinâmica - malloc()Usando sizeof() para AlocaçãoVerificando Falhas de AlocaçãoLiberando Memória com free()Alocando com calloc()Recapitulação: Array Dinâmico9Projeto: Cadastro Simples de Contatos
Projeto: Definir a Struct de ContatoFunção para Criar um ContatoPratique por conta própria: Compilador de C online