Menu
Coddy logo textTech

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 derste oluşturduğun kişi oluşturma işlevini temel alarak, kullanıcı girdisiyle bir kişiyi dolduran bir işlev oluştur. Programın şunları yapmalıdır:

  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 şu işlemleri yapan aynı createContact işlevini kullan:
    • Bir Contact yapısı için dinamik olarak bellek ayırır
    • Tüm üyeleri varsayılan değerlere başlatır
    • Kişiye bir işaretçi döndürür
  3. populateContact adında şu işlemleri yapan 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 dize okur
      • Enter phone: yazdırır ve scanf("%s", contactPtr->phone) kullanarak phone alanına bir dize okur
      • Enter email: yazdırır ve scanf("%s", contactPtr->email) kullanarak email alanına bir dize 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 azsa (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şturmanın başarılı olup olmadığını kontrol et
    • Kişi verilerini doldurmak için populateContact işlevini çağır
    • Doldurma işleminden sonra, ok operatörünü kullanarak kişi bilgilerini şu tam biçimde görüntüle:
      • Contact Information:
      • Name: [name]
      • Phone: [phone]
      • Email: [email]
      • Age: [age]
    • Dinamik olarak ayrılmış belleği serbest bırak
    • Contact deleted successfully yazdır

Bu görev, 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ı girdilerini işlemeyi, veri doğrulamayı ve işlev parametreleri aracılığıyla dinamik olarak ayrılmış yapılarla çalışmayı uygulayacaksın.

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