Menu
CoddyTech

Kişi Bilgilerini Doldurma Fonksiyonu

Coddy'nin C Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 52 / 63.

challenge icon

Görev

Kolay

Önceki dersteki kişi oluşturma işlevini temel alarak, kullanıcı girdisiyle bir kişiyi dolduran bir işlev oluştur. Programın şunları yapmalı:

  1. Önceki derslerdeki aynı Contact yapı tanımını şu üyelerle kullan:
    • Boyutu 50 olan bir karakter dizisi name
    • Boyutu 20 olan bir karakter dizisi phone
    • Boyutu 40 olan bir karakter dizisi email
    • Bir tamsayı age
  2. Önceki dersteki aynı createContact işlevini kullan, ancak artık Contact created successfully yazdırmaması için printf satırlarını kaldır. İşlev yine de:
    • Bir Contact yapısı için dinamik olarak bellek ayırır
    • Tüm üyeleri varsayılan değerlerle başlatır
    • Kişiye bir işaretçi döndürür
  3. Şunları yapan, populateContact adlı bir işlev yaz:
    • Parametre olarak bir Contact yapısına işaretçi alır
    • Hiçbir şey döndürmez (void)
    • Kullanıcıdan girdi ister ve aşağıdaki verileri tam olarak bu sırayla okur:
      • Enter name: yazdırır ve scanf("%s", contactPtr->name) kullanarak name alanına bir metin okur
      • Enter phone: yazdırır ve scanf("%s", contactPtr->phone) kullanarak phone alanına bir metin okur
      • Enter email: yazdırır ve scanf("%s", contactPtr->email) kullanarak email alanına bir metin okur
      • Enter age: yazdırır ve scanf("%d", &contactPtr->age) kullanarak age alanına bir tamsayı okur
    • Tüm girdileri okuduktan sonra verileri doğrular:
      • age 0'dan küçük veya 120'den büyükse Invalid age entered yazdırır
      • Telefon numarasının uzunluğu 10 karakterden kısaysa (strlen() kullan), Invalid phone number yazdırır
      • Tüm doğrulamalar başarılı olursa Contact populated successfully yazdırır
  4. main işlevinde:
    • createContact işlevini kullanarak bir kişi oluştur
    • Kişi oluşturma işleminin başarılı olup olmadığını kontrol et
    • Kişi verilerini doldurmak için populateContact işlevini çağır
    • Verileri doldurduktan sonra kişi bilgilerini ok operatörünü kullanarak tam olarak şu biçimde görüntüle:
      • Contact Information:
      • Name: [name]
      • Phone: [phone]
      • Email: [email]
      • Age: [age]
    • Dinamik olarak ayrılan belleği serbest bırak
    • Contact deleted successfully yazdır

Bu alıştırma, işaretçiler aracılığıyla yapı verilerini değiştiren işlevlerin nasıl oluşturulacağını gösterir. populateContact işlevi kişiye bir işaretçi alır ve özgün yapının üyelerini doğrudan değiştirmek için ok operatörünü kullanır. Kullanıcı girdisi işlemeyi, veri doğrulamayı ve işlev parametreleri aracılığıyla dinamik olarak ayrılan yapılarla çalışmayı deneyimleyeceksin.

Kendin dene

#include <stdio.h>
#include <stdlib.h>

struct Contact {
    char name[50];
    char phone[20];
    char email[40];
    int age;
};

struct Contact* createContact() {
    struct Contact* contactPtr = (struct Contact*)malloc(sizeof(struct Contact));
    
    if (contactPtr == NULL) {
        printf("Memory allocation failed\n");
        return NULL;
    }
    
    printf("Contact created successfully\n");
    
    contactPtr->name[0] = '\0';
    contactPtr->phone[0] = '\0';
    contactPtr->email[0] = '\0';
    contactPtr->age = 0;
    
    return contactPtr;
}

int main() {
    struct Contact* newContact;
    
    newContact = createContact();
    
    if (newContact == NULL) {
        printf("Failed to create contact\n");
        return 1;
    }
    
    printf("Contact initialized with default values\n");
    
    printf("Default Contact Values:\n");
    printf("Name: %s\n", newContact->name);
    printf("Phone: %s\n", newContact->phone);
    printf("Email: %s\n", newContact->email);
    printf("Age: %d\n", newContact->age);
    
    free(newContact);
    printf("Memory freed successfully\n");
    
    return 0;
}

Mantık & Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online C derleyicisi