Projeto: Definir a Struct de Contato
Parte da seção Logic & Flow do Journey de C da Coddy — lição 50 de 63.
Desafio
FácilVocê construirá uma ferramenta simples de entrada de contatos que demonstra como as 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:
- Criar uma variável
Contactchamadaperson - Ler os seguintes valores de entrada e atribuí-los aos membros da struct usando o operador ponto:
- Ler uma string para o nome e atribuí-la a
person.name - Ler uma string para o número de telefone e atribuí-la a
person.phone - Ler uma string para o e-mail e atribuí-la a
person.email - Ler um inteiro para a idade e atribuí-lo a
person.age
- Ler uma string para o nome e atribuí-la a
- Após ler todos os valores, realizar as seguintes verificações de validação:
- Se a idade for menor que 0 ou maior que 120, imprimir
Invalid agee encerrar o programa - Se o comprimento do número de telefone for menor que 10 caracteres, imprimir
Invalid phone numbere encerrar o programa
- Se a idade for menor que 0 ou maior que 120, imprimir
- Se todas as validações passarem, imprimir as informações de contato neste formato exato:
Contact Information:Name: [name]Phone: [phone]Email: [email]Age: [age]
- Calcular e imprimir informações adicionais:
- Imprimir o comprimento do nome usando
strlen()no formato:Name length: [length] - Determinar a categoria de idade e imprimi-la:
- 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 superior:
Category: Senior
- Se a idade estiver entre 0 e 17:
- Imprimir o comprimento do nome usando
- Criar uma variável
Este desafio testa sua compreensão da definição de struct, declaração de membros com tipos de dados e tamanhos apropriados, acesso a membros de struct usando o operador ponto, validação de entrada e uso de funções de string como strlen() com membros de struct. 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 Logic & Flow
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 Contato