Progetto: Definire una struct Contatto
Fa parte della sezione Logica e flusso del percorso C di Coddy. Lezione 50 di 63.
Sfida
FacileCostruirai un semplice strumento per inserire contatti che dimostra come le struct possano organizzare dati correlati in applicazioni reali.
Crea un programma C che definisca una struct Contact per memorizzare le informazioni di un contatto. Il programma dovrà:
- Definire una
structdenominataContactcon i seguenti membri:- Un array di caratteri
namedi dimensione 50 per memorizzare il nome del contatto - Un array di caratteri
phonedi dimensione 20 per memorizzare il numero di telefono del contatto - Un array di caratteri
emaildi dimensione 40 per memorizzare l'indirizzo email del contatto - Un intero
ageper memorizzare l'età del contatto
- Un array di caratteri
- Nella funzione principale:
- Creare una variabile
Contactdenominataperson - Leggere i seguenti valori di input e assegnarli ai membri della struct usando l'operatore punto:
- Leggere una stringa per il nome e assegnarla a
person.name - Leggere una stringa per il numero di telefono e assegnarla a
person.phone - Leggere una stringa per l'email e assegnarla a
person.email - Leggere un intero per l'età e assegnarlo a
person.age
- Leggere una stringa per il nome e assegnarla a
- Dopo aver letto tutti i valori, eseguire i seguenti controlli di convalida:
- Se l'età è minore di 0 o maggiore di 120, stampare
Invalid agee terminare il programma - Se la lunghezza del numero di telefono è inferiore a 10 caratteri, stampare
Invalid phone numbere terminare il programma
- Se l'età è minore di 0 o maggiore di 120, stampare
- Se tutti i controlli di convalida vengono superati, stampare le informazioni del contatto in questo formato esatto:
Contact Information:Name: [name]Phone: [phone]Email: [email]Age: [age]
- Calcolare e stampare informazioni aggiuntive:
- Stampare la lunghezza del nome usando
strlen()nel formato:Name length: [length] - Determinare la categoria di età e stamparla:
- Se l'età è compresa tra 0 e 17:
Category: Minor - Se l'età è compresa tra 18 e 64:
Category: Adult - Se l'età è pari o superiore a 65:
Category: Senior
- Se l'età è compresa tra 0 e 17:
- Stampare la lunghezza del nome usando
- Creare una variabile
Questa sfida verifica la tua comprensione della definizione di struct, della dichiarazione dei membri con tipi di dati e dimensioni adeguati, dell'accesso ai membri di una struct usando l'operatore punto, della convalida dell'input e dell'uso di funzioni per le stringhe come strlen() con i membri di una struct. Ti eserciterai a creare una struttura dati pratica che potrebbe costituire la base di un sistema di gestione dei contatti.
Provalo tu
#include <stdio.h>
#include <string.h>
// TODO: Definisci qui la struct Contact
int main() {
// TODO: Crea una variabile Contact chiamata person
// Leggi i valori di input
scanf("%s", /* TODO: assegna a person.name */);
scanf("%s", /* TODO: assegna a person.phone */);
scanf("%s", /* TODO: assegna a person.email */);
scanf("%d", /* TODO: assegna a person.age */);
// TODO: Scrivi qui sotto il codice per la validazione e l'output
return 0;
}Tutte le lezioni di Logica e flusso
1Fondamenti dei puntatori
Che cos’è un puntatore?Dichiarare i puntatoriL’operatore di indirizzo (&)L’operatore di dereferenziazione (*)Puntatori NULLRiepilogo: nozioni di base sui puntatori4Progetto: Utility di testo semplice
Panoramica del progettoConteggio dei caratteri2Puntatori e array
I nomi degli array come puntatoriElementi degli array e puntatoriAritmetica dei puntatoriConfrontare i puntatoriRiepilogo: attraversamento di un array con i puntatori5Puntatori e funzioni
Passaggio per valorePassare puntatori alle funzioniModificare le variabili tramite puntatoriUn esempio classico: scambiare valoriPassare array alle funzioniRiepilogo: argomenti puntatore nelle funzioni3Array di caratteri e stringhe
Stringhe come array di charIl terminatore nullInput di stringhe con scanfUso di strlen()Uso di strcpy()Uso di strcat()Uso di strcmp()Riepilogo: funzioni di base per le stringhe6Gestione della memoria
Memoria Stack vs. HeapAllocazione dinamica - malloc()Usare sizeof() per l'allocazioneVerificare il fallimento dell'allocazioneLiberare la memoria con free()Allocare con calloc()Riepilogo: array dinamico9Progetto: Inserimento semplice di un contatto
Progetto: Definire una struct ContattoFunzione per creare un contattoEsercitati da solo: Compilatore C online