Định nghĩa struct Contact
Thuộc phần Logic và luồng điều khiển trong hành trình C của Coddy. Bài học 50 trên 63.
Thử thách
DễBạn sẽ xây dựng một công cụ đơn giản để lưu thông tin liên hệ, qua đó tìm hiểu cách struct giúp sắp xếp dữ liệu có liên quan trong các ứng dụng thực tế.
Hãy tạo một chương trình C định nghĩa struct Contact để lưu thông tin liên hệ. Chương trình cần:
- Định nghĩa một
structcó tênContactvới các thành viên sau:- Một mảng ký tự
namecó kích thước 50 để lưu tên liên hệ - Một mảng ký tự
phonecó kích thước 20 để lưu số điện thoại của liên hệ - Một mảng ký tự
emailcó kích thước 40 để lưu địa chỉ email của liên hệ - Một số nguyên
ageđể lưu tuổi của liên hệ
- Một mảng ký tự
- Trong hàm main:
- Tạo một biến kiểu
Contactcó tênperson - Đọc các giá trị đầu vào sau và gán chúng cho các thành viên của struct bằng toán tử dấu chấm:
- Đọc một chuỗi cho tên và gán chuỗi đó cho
person.name - Đọc một chuỗi cho số điện thoại và gán chuỗi đó cho
person.phone - Đọc một chuỗi cho email và gán chuỗi đó cho
person.email - Đọc một số nguyên cho tuổi và gán số đó cho
person.age
- Đọc một chuỗi cho tên và gán chuỗi đó cho
- Sau khi đọc tất cả giá trị, thực hiện các bước kiểm tra sau:
- Nếu tuổi nhỏ hơn 0 hoặc lớn hơn 120, in ra
Invalid agerồi thoát chương trình - Nếu độ dài số điện thoại nhỏ hơn 10 ký tự, in ra
Invalid phone numberrồi thoát chương trình
- Nếu tuổi nhỏ hơn 0 hoặc lớn hơn 120, in ra
- Nếu tất cả bước kiểm tra đều đạt, in thông tin liên hệ theo đúng định dạng sau:
Contact Information:Name: [name]Phone: [phone]Email: [email]Age: [age]
- Tính và in thêm thông tin:
- Dùng
strlen()để in độ dài tên theo định dạng:Name length: [length] - Xác định nhóm tuổi và in ra:
- Nếu tuổi từ 0 đến 17:
Category: Minor - Nếu tuổi từ 18 đến 64:
Category: Adult - Nếu tuổi từ 65 trở lên:
Category: Senior
- Nếu tuổi từ 0 đến 17:
- Dùng
- Tạo một biến kiểu
Thử thách này kiểm tra mức độ hiểu của bạn về cách định nghĩa struct, khai báo thành viên với kiểu dữ liệu và kích thước phù hợp, truy cập thành viên struct bằng toán tử dấu chấm, kiểm tra đầu vào và dùng các hàm xử lý chuỗi như strlen() với thành viên struct. Bạn sẽ luyện tập tạo một cấu trúc dữ liệu thiết thực, có thể làm nền tảng cho một hệ thống quản lý liên hệ.
Tự làm thử
#include <stdio.h>
#include <string.h>
// TODO: Định nghĩa struct Contact tại đây
int main() {
// TODO: Tạo biến Contact tên là person
// Đọc các giá trị đầu vào
scanf("%s", /* TODO: gán vào person.name */);
scanf("%s", /* TODO: gán vào person.phone */);
scanf("%s", /* TODO: gán vào person.email */);
scanf("%d", /* TODO: gán vào person.age */);
// TODO: Viết code kiểm tra tính hợp lệ và code đầu ra bên dưới
return 0;
}Tất cả bài học trong Logic và luồng điều khiển
1Nền tảng về con trỏ
Con trỏ là gì?Khai báo con trỏToán tử lấy địa chỉ (&)Toán tử giải tham chiếu (*)Con trỏ NULLÔn tập: kiến thức cơ bản về con trỏ4Dự án: Công cụ xử lý văn bản đơn giản
Tổng quan dự ánĐếm ký tự2Con trỏ và mảng
Tên mảng dưới dạng con trỏPhần tử mảng và con trỏPhép toán con trỏSo sánh con trỏÔn tập: duyệt mảng bằng con trỏ5Con trỏ và hàm
Truyền theo giá trịTruyền con trỏ vào hàmSửa đổi biến qua con trỏVí dụ kinh điển: hoán đổiTruyền mảng vào hàmÔn tập: đối số con trỏ hàm3Mảng ký tự và chuỗi
Chuỗi dưới dạng mảng charKý tự kết thúc nullNhập chuỗi bằng scanfDùng strlen()Dùng strcpy()Dùng strcat()Dùng strcmp()Ôn tập: các hàm xử lý chuỗi cơ bản6Quản lý bộ nhớ
Bộ nhớ ngăn xếp và bộ nhớ heapCấp phát động với malloc()Dùng sizeof() để cấp phátKiểm tra lỗi cấp phátGiải phóng bộ nhớ với free()Cấp phát với calloc()Ôn tập: Mảng động9Dự án: Nhập thông tin liên hệ đơn giản
Định nghĩa struct ContactHàm tạo liên hệTự luyện tập: Trình biên dịch C online