Proje: Kişi Struct'ını Tanımlama
Coddy'nin C Journey'sinin Logic & Flow bölümünün bir parçası — ders 50 / 63.
Görev
KolayStruct'ların gerçek dünya uygulamalarında ilgili verileri nasıl organize edebildiğini gösteren basit bir kişi giriş aracı oluşturacaksınız.
İletişim bilgilerini saklamak için bir Contact struct'ı tanımlayan bir C programı oluşturun. Programınız şunları yapmalıdır:
- Aşağıdaki üyelere sahip
Contactadında birstructtanımlayın:- Kişinin adını saklamak için 50 boyutunda bir karakter dizisi:
name - Kişinin telefon numarasını saklamak için 20 boyutunda bir karakter dizisi:
phone - Kişinin e-posta adresini saklamak için 40 boyutunda bir karakter dizisi:
email - Kişinin yaşını saklamak için bir tam sayı:
age
- Kişinin adını saklamak için 50 boyutunda bir karakter dizisi:
- Main fonksiyonu içinde:
personadında birContactdeğişkeni oluşturun- Aşağıdaki girdi değerlerini okuyun ve nokta operatörünü kullanarak bunları struct üyelerine atayın:
- İsim için bir dize okuyun ve bunu
person.namedeğişkenine atayın - Telefon numarası için bir dize okuyun ve bunu
person.phonedeğişkenine atayın - E-posta için bir dize okuyun ve bunu
person.emaildeğişkenine atayın - Yaş için bir tam sayı okuyun ve bunu
person.agedeğişkenine atayın
- İsim için bir dize okuyun ve bunu
- Tüm değerleri okuduktan sonra aşağıdaki doğrulama kontrollerini gerçekleştirin:
- Yaş 0'dan küçük veya 120'den büyükse,
"Invalid age"yazdırın ve programdan çıkın - Telefon numarası uzunluğu 10 karakterden azsa,
"Invalid phone number"yazdırın ve programdan çıkın
- Yaş 0'dan küçük veya 120'den büyükse,
- Tüm doğrulamalar geçerse, iletişim bilgilerini tam olarak şu formatta yazdırın:
"Contact Information:""Name: [name]""Phone: [phone]""Email: [email]""Age: [age]"
- Ek bilgileri hesaplayın ve yazdırın:
strlen()kullanarak ismin uzunluğunu şu formatta yazdırın:"Name length: [length]"- Yaş kategorisini belirleyin ve yazdırın:
- Yaş 0 ile 17 arasındaysa:
"Category: Minor" - Yaş 18 ile 64 arasındaysa:
"Category: Adult" - Yaş 65 veya üzerindeyse:
"Category: Senior"
- Yaş 0 ile 17 arasındaysa:
Bu zorluk; struct tanımı, uygun veri türleri ve boyutlarıyla üye bildirimi, nokta operatörünü kullanarak struct üyelerine erişim, girdi doğrulaması ve struct üyeleriyle strlen() gibi dize fonksiyonlarının kullanımını anlama düzeyinizi test eder. Bir iletişim yönetim sisteminin temeli olabilecek pratik bir veri yapısı oluşturma pratiği yapacaksınız.
Kendin dene
#include <stdio.h>
#include <string.h>
// YAPILACAK: Contact yapısını (struct) burada tanımlayın
int main() {
// YAPILACAK: person adında bir Contact değişkeni oluşturun
// Giriş değerlerini oku
scanf("%s", /* YAPILACAK: person.name'e ata */);
scanf("%s", /* YAPILACAK: person.phone'a ata */);
scanf("%s", /* YAPILACAK: person.email'e ata */);
scanf("%d", /* YAPILACAK: person.age'e ata */);
// YAPILACAK: Doğrulama ve çıktı kodunuzu aşağıya yazın
return 0;
}Logic & Flow bölümündeki tüm dersler
1Pointer Temelleri
Pointer Nedir?Pointer TanımlamaAdres Operatörü (&)Dereference Operatörü (*)NULL Pointer'larÖzet: Pointer Temelleri4Proje: Basit Metin Aracı
Projeye Genel BakışKarakter Sayma2İşaretçiler ve Diziler
İşaretçi Olarak Dizi İsimleriDizi Elemanları - İşaretçilerİşaretçi Aritmetiğiİşaretçilerin KarşılaştırılmasıÖzet: İşaretçi ile Dizi Gezinme5İşaretçiler ve Fonksiyonlar
Değer ile GeçmeFonksiyonlara İşaretçi Göndermeİşaretçiler ile Değişkenleri DeğiştirmeKlasik Bir Örnek: SwapFonksiyonlara Dizi GöndermeÖzet: Fonksiyon İşaretçi Argümanları8Yapılar ve İşaretçiler
Yapılara İşaretçilerOk Operatörü (->)Yapıları Değer ile AktarmaYapı İşaretçilerini AktarmaYapıların Dinamik TahsisiÖzet: Yapıyı Değiştirme - Ptr11Son Tekrar Görevleri
Tekrar: Dinamik String BirleştirmeTekrar: Struct DizisiTekrar: Kelime Frekans Sayacı3Karakter Dizileri ve Stringler
char Dizisi Olarak StringlerNull Sonlandırıcıscanf ile String Girişistrlen() Kullanımıstrcpy() Kullanımıstrcat() Kullanımıstrcmp() KullanımıÖzet: Temel String Fonksiyonları6Bellek Yönetimi
Stack ve Heap BellekDinamik Bellek Ayırma - malloc()Bellek Ayırma için sizeof() KullanımıBellek Ayırma Hatasını Kontrol Etmefree() ile Belleği Serbest Bırakmacalloc() ile Bellek AyırmaÖzet: Dinamik Dizi9Proje: Basit Kişi Kaydı
Proje: Kişi Struct'ını TanımlamaKişi Oluşturma Fonksiyonu