Hướng dẫn cách so sánh struct trong C. Bạn sẽ học được các cách căn bản để so sánh 2 struct trong C sau bài học này.
Chúng ta có 2 phương pháp so sánh struct trong c như sau:
- Sử dụng hàm strcmp để so sánh giá trị từng thành viên trong struct với nhau
- Sử dụng hàm memcmp để so sánh kích thước 2 struct với nhau
So sánh 2 struct trong C bằng cách so sánh các thành viên với nhau
Để so sánh 2 struct trong C xem chúng có giống nhau hay không, chúng ta sẽ tiến hành so sánh lần lượt giá trị của các thành viên của chúng. Nếu chỉ cần một cặp thành viên trong chúng có giá trị khác nhau thì chúng ta có thể kết luận là 2 struct này khác nhau. Ngược lại nếu tất cả các cặp giá trị giữa chúng đều giống nhau, điều đó chứng tỏ 2 struct này hoàn toàn giống nhau.
Khi so sánh các cặp thành viên giữa 2 struct với nhau, chúng ta cần lưu ý tới kiểu của thành viên. Nếu thành viên thuộc kiểu số, chúng ta đơn giản có thể sử dụng các toán tử so sánh với chúng. Tuy nhiên nếu thành viên thuộc kiểu chuỗi thì chúng ta cần sử dụng tới hàm so sánh chuỗi strcmp mà Kiyoshi đã hướng dẫn trong bài So sánh chuỗi trong C.
Lại nữa, để tiện cho việc so sánh struct thì chúng ta sẽ sử dụng con trỏ struct trong C để làm đối số trong các hàm so sánh. Bạn có thể tìm hiểu về con trỏ struct tại bài viết sau:
- Xem thêm: Con trỏ cấu trúc trong c
Sau đây chúng ta sẽ tạo ra một hàm để so sánh 2 struct trong C thông qua so sánh các thành viên trong chương trình như sau:
|
Kết quả phép so sánh 2 struct trong C như sau:
struct kiyoshi giong struct kiyoshi2 |
So sánh 2 struct trong C bằng cách so sánh kích thước 2 struct với nhau
Phương pháp thứ 2 để so sánh 2 struct trong C đó chính là so sánh kích thước chiếm trong bộ nhớ của 2 struct với nhau.
Ý tưởng ở đây rất đơn giản. Chúng ta lấy kích thước của 2 struct này và so sánh chúng. Nếu chúng có cùng kích thước (byte) chiếm trong bộ nhớ thì điều đó chứng tỏ là chúng giống nhau. Và ngược lại nếu kích thước của chúng khác nhau thì điều đó chứng tỏ là chúng khác nhau.
Để so sánh kích thước chiếm trong bộ nhớ của 2 struct, chúng ta sẽ dùng tới hàm memcmp trong C. Hàm memcmp thường được sử dụng để so sánh quan hệ lớn nhỏ giữa 2 vùng trong bộ nhớ, tuy nhiên bằng cách kiểm tra giá trị trả về của nó là 0 hay là một số khác 0 thì chúng ta cũng có thể so sánh xem 2 struct trong C có giống nhau hay không.
Và chúng ta viết chương trình so sánh 2 struct trong C bằng cách so sánh kích thước 2 struct với nhau như sau:
|
Kết quả phép so sánh 2 struct trong C như sau:
struct kiyoshi giong struct kiyoshi2 |
Tổng kết
Trên đây Kiyoshi đã hướng dẫn bạn cách so sánh 2 struct trong c rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.
Và hãy cùng tìm hiểu những kiến thức sâu hơn về C trong các bài học tiếp theo.
URL Link
https://laptrinhcanban.com/c/lap-trinh-c-co-ban/kieu-cau-truc-trong-c/so-sanh-struct-trong-c/
HOME › lập trình c cơ bản dành cho người mới học lập trình>>15. kiểu cấu trúc trong c