Menu
CoddyTech

Fungsi untuk Mengisi Data Kontak

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

challenge icon

Tantangan

Mudah

Melanjutkan fungsi pembuatan kontak dari pelajaran sebelumnya, buat fungsi yang mengisi kontak dengan input pengguna. Programmu harus:

  1. Gunakan definisi struct Contact yang sama dari pelajaran sebelumnya dengan anggota:
    • Array karakter name berukuran 50
    • Array karakter phone berukuran 20
    • Array karakter email berukuran 40
    • Bilangan bulat age
  2. Gunakan fungsi createContact yang sama dari pelajaran sebelumnya, yang:
    • Mengalokasikan memori secara dinamis untuk struct Contact
    • Menginisialisasi semua anggota dengan nilai default
    • Mengembalikan pointer ke kontak
  3. Tulis fungsi bernama populateContact yang:
    • Menerima pointer ke struct Contact sebagai parameternya
    • Tidak mengembalikan apa pun (void)
    • Meminta input dari pengguna dan membaca data berikut dalam urutan yang tepat:
      • Mencetak Enter name: dan membaca string ke dalam field nama menggunakan scanf("%s", contactPtr->name)
      • Mencetak Enter phone: dan membaca string ke dalam field telepon menggunakan scanf("%s", contactPtr->phone)
      • Mencetak Enter email: dan membaca string ke dalam field email menggunakan scanf("%s", contactPtr->email)
      • Mencetak Enter age: dan membaca bilangan bulat ke dalam field usia menggunakan scanf("%d", &contactPtr->age)
    • Setelah membaca semua input, validasi datanya:
      • Jika usia kurang dari 0 atau lebih dari 120, cetak Invalid age entered
      • Jika panjang nomor telepon kurang dari 10 karakter (gunakan strlen()), cetak Invalid phone number
      • Jika semua validasi berhasil, cetak Contact populated successfully
  4. Di fungsi main:
    • Buat kontak menggunakan fungsi createContact
    • Periksa apakah pembuatan kontak berhasil
    • Panggil fungsi populateContact untuk mengisi data kontak
    • Setelah mengisi data, tampilkan informasi kontak menggunakan operator panah dalam format yang tepat ini:
      • Contact Information:
      • Name: [name]
      • Phone: [phone]
      • Email: [email]
      • Age: [age]
    • Bebaskan memori yang dialokasikan secara dinamis
    • Cetak Contact deleted successfully

Tantangan ini menunjukkan cara membuat fungsi yang mengubah data struct melalui pointer. Fungsi populateContact menerima pointer ke kontak dan menggunakan operator panah untuk mengubah langsung anggota struct asli. Kamu akan berlatih menangani input pengguna, validasi data, dan menggunakan struct yang dialokasikan secara dinamis melalui parameter fungsi.

Coba sendiri

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

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler C online