Fungsi untuk Membuat Kontak
Termasuk bagian Logika dan Alur dalam perjalanan C di Coddy. Pelajaran 51 dari 63.
Tantangan
MudahDengan memanfaatkan Contact struct dari pelajaran sebelumnya, buat fungsi yang mengalokasikan memori secara dinamis untuk kontak baru. Programmu harus:
- Menggunakan definisi
Contactstruct yang sama dari pelajaran sebelumnya dengan anggota:- Array karakter
namedengan ukuran 50 - Array karakter
phonedengan ukuran 20 - Array karakter
emaildengan ukuran 40 - Bilangan bulat
age
- Array karakter
- Menulis fungsi bernama
createContactyang:- Tidak menerima parameter
- Mengembalikan pointer ke
Contactstruct - Menggunakan
malloc()untuk mengalokasikan memori secara dinamis bagi satuContactstruct - Memeriksa apakah alokasi memori berhasil:
- Jika alokasi gagal (mengembalikan NULL), mencetak
Memory allocation faileddan mengembalikan NULL - Jika alokasi berhasil, mencetak
Contact created successfully
- Jika alokasi gagal (mengembalikan NULL), mencetak
- Menginisialisasi semua anggota struct ke nilai default menggunakan operator panah:
- Mengatur
namemenjadi string kosong menggunakancontactPtr->name[0] = '\0'; - Mengatur
phonemenjadi string kosong menggunakancontactPtr->phone[0] = '\0'; - Mengatur
emailmenjadi string kosong menggunakancontactPtr->email[0] = '\0'; - Mengatur
agemenjadi 0 menggunakancontactPtr->age = 0;
- Mengatur
- Mengembalikan pointer ke kontak yang baru dibuat
- Di fungsi main:
- Mendeklarasikan pointer ke
Contactstruct bernamanewContact - Memanggil fungsi
createContactdan menetapkan pointer yang dikembalikan kenewContact - Memeriksa apakah pembuatan kontak berhasil:
- Jika
newContactadalah NULL, mencetakFailed to create contactdan keluar dari program - Jika berhasil, mencetak
Contact initialized with default values
- Jika
- 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
- Mendeklarasikan pointer ke
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
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