Menu
CoddyTech

Fungsi untuk Membuat Kontak

Termasuk bagian Logika dan Alur dalam perjalanan C di Coddy. Pelajaran 51 dari 63.

challenge icon

Tantangan

Mudah

Dengan memanfaatkan Contact struct dari pelajaran sebelumnya, buat fungsi yang mengalokasikan memori secara dinamis untuk kontak baru. Programmu harus:

  1. Menggunakan definisi Contact struct yang sama dari pelajaran sebelumnya dengan anggota:
    • Array karakter name dengan ukuran 50
    • Array karakter phone dengan ukuran 20
    • Array karakter email dengan ukuran 40
    • Bilangan bulat age
  2. Menulis fungsi bernama createContact yang:
    • Tidak menerima parameter
    • Mengembalikan pointer ke Contact struct
    • Menggunakan malloc() untuk mengalokasikan memori secara dinamis bagi satu Contact struct
    • Memeriksa apakah alokasi memori berhasil:
      • Jika alokasi gagal (mengembalikan NULL), mencetak Memory allocation failed dan mengembalikan NULL
      • Jika alokasi berhasil, mencetak Contact created successfully
    • Menginisialisasi semua anggota struct ke nilai default menggunakan operator panah:
      • Mengatur name menjadi string kosong menggunakan contactPtr->name[0] = '\0';
      • Mengatur phone menjadi string kosong menggunakan contactPtr->phone[0] = '\0';
      • Mengatur email menjadi string kosong menggunakan contactPtr->email[0] = '\0';
      • Mengatur age menjadi 0 menggunakan contactPtr->age = 0;
    • Mengembalikan pointer ke kontak yang baru dibuat
  3. Di fungsi main:
    • Mendeklarasikan pointer ke Contact struct bernama newContact
    • Memanggil fungsi createContact dan menetapkan pointer yang dikembalikan ke newContact
    • Memeriksa apakah pembuatan kontak berhasil:
      • Jika newContact adalah NULL, mencetak Failed to create contact dan keluar dari program
      • Jika berhasil, mencetak Contact initialized with default values
    • Menampilkan informasi kontak yang telah diinisialisasi menggunakan operator panah dalam format persis berikut:
      • Default Contact Values:
      • Name: [name] (akan kosong)
      • Phone: [phone] (akan kosong)
      • Email: [email] (akan kosong)
      • Age: [age] (akan bernilai 0)
    • Membebaskan memori yang dialokasikan secara dinamis menggunakan free(newContact)
    • Mencetak Memory freed successfully

Tantangan ini memperkenalkan konsep fungsi factory, yaitu fungsi yang membuat dan mengembalikan pointer ke struct yang dialokasikan secara dinamis. Kamu akan berlatih mengalokasikan memori secara dinamis, melakukan pemeriksaan error dengan benar, menginisialisasi struct melalui pointer, dan membersihkan memori.

Coba sendiri

#include <stdio.h>
#include <string.h>

// TODO: Define the Contact struct here
struct Contact {
    char name[50];
    char phone[20];
    char email[40];
    int age;
};

int main() {
    // TODO: Create a Contact variable named person
    struct Contact person;
    
    // Read input values
    scanf("%s", person.name);
    scanf("%s", person.phone);
    scanf("%s", person.email);
    scanf("%d", &person.age);
    
    // TODO: Write your validation and output code below
    if (person.age < 0 || person.age > 120) {
        printf("Invalid age");
        return 0;
    }
    
    if (strlen(person.phone) < 10) {
        printf("Invalid phone number");
        return 0;
    }
    
    printf("Contact Information:\n");
    printf("Name: %s\n", person.name);
    printf("Phone: %s\n", person.phone);
    printf("Email: %s\n", person.email);
    printf("Age: %d\n", person.age);
    
    printf("Name length: %lu\n", strlen(person.name));
    
    if (person.age >= 0 && person.age <= 17) {
        printf("Category: Minor");
    } else if (person.age >= 18 && person.age <= 64) {
        printf("Category: Adult");
    } else {
        printf("Category: Senior");
    }
    
    return 0;
}

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler C online