Menu
Coddy logo textTech

Kişi Bilgilerini Doldurma Fonksiyonu

Coddy'nin C Journey'sinin Logic & Flow bölümünün bir parçası — ders 52 / 63.

challenge icon

Görev

Kolay

Önceki dersteki kişi oluşturma fonksiyonunuzun üzerine inşa ederek, bir kişiyi kullanıcı girişiyle dolduran bir fonksiyon oluşturun. Programınız şunları yapmalıdır:

  1. Önceki derslerdeki şu üyelere sahip aynı Contact struct tanımını kullanın:
    • 50 boyutunda bir karakter dizisi name
    • 20 boyutunda bir karakter dizisi phone
    • 40 boyutunda bir karakter dizisi email
    • Bir tam sayı age
  2. Önceki dersteki şu işlemleri yapan aynı createContact fonksiyonunu kullanın:
    • Bir Contact struct'ı için dinamik olarak bellek ayırır
    • Tüm üyeleri varsayılan değerlere başlatır
    • Kişiye bir işaretçi (pointer) döndürür
  3. Şu işlemleri yapan populateContact adında bir fonksiyon yazın:
    • Parametre olarak bir Contact struct işaretçisi 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 ad alanına bir dize okur
      • Enter phone: yazdırır ve scanf("%s", contactPtr->phone) kullanarak telefon alanına bir dize okur
      • Enter email: yazdırır ve scanf("%s", contactPtr->email) kullanarak e-posta alanına bir dize okur
      • Enter age: yazdırır ve scanf("%d", &contactPtr->age) kullanarak yaş alanına bir tam sayı okur
    • Tüm girdileri okuduktan sonra verileri doğrular:
      • Eğer yaş 0'dan küçük veya 120'den büyükse, Invalid age entered yazdırır
      • Eğer telefon numarası uzunluğu 10 karakterden azsa (strlen() kullanın), Invalid phone number yazdırır
      • Tüm doğrulamalar geçerse, Contact populated successfully yazdırır
  4. Ana fonksiyonda (main function):
    • createContact fonksiyonunu kullanarak bir kişi oluşturun
    • Kişi oluşturmanın başarılı olup olmadığını kontrol edin
    • Kişi verilerini doldurmak için populateContact fonksiyonunu çağırın
    • Doldurduktan sonra, ok operatörünü kullanarak kişi bilgilerini tam olarak şu formatta görüntüleyin:
      • Contact Information:
      • Name: [name]
      • Phone: [phone]
      • Email: [email]
      • Age: [age]
    • Dinamik olarak ayrılmış belleği serbest bırakın
    • Contact deleted successfully yazdırın

Bu meydan okuma, işaretçiler aracılığıyla struct verilerini değiştiren fonksiyonların nasıl oluşturulacağını gösterir. populateContact fonksiyonu kişiye bir işaretçi alır ve orijinal struct üyelerini doğrudan değiştirmek için ok operatörünü kullanır. Kullanıcı girişi işleme, veri doğrulama ve fonksiyon parametreleri aracılığıyla dinamik olarak ayrılmış struct'larla çalışma pratiği yapacaksınız.

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;
}

Logic & Flow bölümündeki tüm dersler