Fungsi untuk Mengisi Data Kontak
Termasuk bagian Logika dan Alur dalam perjalanan C di Coddy. Pelajaran 52 dari 63.
Tantangan
MudahMelanjutkan fungsi pembuatan kontak dari pelajaran sebelumnya, buat fungsi yang mengisi kontak dengan input pengguna. Programmu harus:
- Gunakan definisi struct
Contactyang sama dari pelajaran sebelumnya dengan anggota:- Array karakter
nameberukuran 50 - Array karakter
phoneberukuran 20 - Array karakter
emailberukuran 40 - Bilangan bulat
age
- Array karakter
- Gunakan fungsi
createContactyang sama dari pelajaran sebelumnya, yang:- Mengalokasikan memori secara dinamis untuk struct
Contact - Menginisialisasi semua anggota dengan nilai default
- Mengembalikan pointer ke kontak
- Mengalokasikan memori secara dinamis untuk struct
- Tulis fungsi bernama
populateContactyang:- Menerima pointer ke struct
Contactsebagai 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 menggunakanscanf("%s", contactPtr->name) - Mencetak
Enter phone:dan membaca string ke dalam field telepon menggunakanscanf("%s", contactPtr->phone) - Mencetak
Enter email:dan membaca string ke dalam field email menggunakanscanf("%s", contactPtr->email) - Mencetak
Enter age:dan membaca bilangan bulat ke dalam field usia menggunakanscanf("%d", &contactPtr->age)
- Mencetak
- 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()), cetakInvalid phone number - Jika semua validasi berhasil, cetak
Contact populated successfully
- Jika usia kurang dari 0 atau lebih dari 120, cetak
- Menerima pointer ke struct
- Di fungsi main:
- Buat kontak menggunakan fungsi
createContact - Periksa apakah pembuatan kontak berhasil
- Panggil fungsi
populateContactuntuk 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
- Buat kontak menggunakan fungsi
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
1Dasar-Dasar Pointer
Apa Itu Pointer?Mendeklarasikan PointerOperator Address-Of (&)Operator Dereference (*)Pointer NULLRekap: Dasar-Dasar Pointer4Proyek: Utilitas Teks Sederhana
Gambaran Umum ProyekMenghitung Karakter2Pointer dan array
Nama array sebagai pointerElemen array dan pointerAritmetika pointerMembandingkan pointerRangkuman: Menelusuri array dengan pointer5Pointer dan Fungsi
Penerusan dengan NilaiMeneruskan Pointer ke FungsiMengubah Variabel melalui PointerContoh Klasik: SwapMeneruskan Array ke FungsiRingkasan: Argumen Pointer Fungsi8Struct dan Pointer
Pointer ke StructOperator Panah (->)Mengirim Struct berdasarkan NilaiMengirim Pointer StructAlokasi Dinamis StructUlasan: Memodifikasi Struct dengan Pointer11Tantangan Rangkuman Akhir
Rangkuman: Penggabungan string DinamisRangkuman: array berisi structRangkuman: Penghitung Frekuensi Kata3Array char dan String
String sebagai array charPenanda akhir nullInput String dengan scanfMenggunakan strlen()Menggunakan strcpy()Menggunakan strcat()Menggunakan strcmp()Ulasan: Fungsi String Dasar6Manajemen Memori
Memori Stack vs. HeapAlokasi Dinamis dengan malloc()Menggunakan sizeof() untuk AlokasiMemeriksa Kegagalan AlokasiMembebaskan Memori dengan free()Alokasi dengan calloc()Ringkasan: array Dinamis9Proyek: Entri Kontak Sederhana
Proyek: Definisikan struct KontakFungsi untuk Membuat KontakLatihan sendiri: Compiler C online