Thứ Sáu, 19 tháng 4, 2024

42. Struct - Dữ Liệu Kiểu Cấu Trúc

Struct hay cấu trúc là một kiểu dữ liệu mà người dùng tự định nghĩa, là giải pháp khi chúng ta cần giải quyết các bài toán thực tế khi mà đối tượng cần lưu lại trong chương trình có rất nhiều thông tin.


Ví dụ khi muốn lưu thông tin của một sinh viên: tên, năm sinh, email, điểm... thì không có kiểu dữ liệu nào trong C phù hợp cả, mà bạn cần tập hợp nhiều kiểu dữ liệu có sẵn vào làm một.

Cú pháp :

struct ten_struct{
     data_type1 data_field1;
     data_type2 data_field2;
     ....
     data_typen data_fieldn;
};



Ví dụ chúng ta sẽ xây dựng một cấu trúc lưu sinh viên gồm :

    Họ tên - Chuỗi ký tự không quá 50
    Email - Chuỗi ký tự không quá 50
    Chuyên ngành - Chuỗi ký tự không quá 60
    Điểm trung bình - Số thực

Ta sẽ xây dựng cấu trúc sinh viên như sau : 



struct SinhVien{
    char hoten[50];
    char email[50];
    char chuyenNganh[60];
    double diemTrungBinh;
};



Sau khi xây dựng xong cấu trúc thì bạn có thể dùng nó như kiểu dữ liệu thông thường và khai báo các biến thuộc kiểu cấu trúc này.

Để truy cập vào các trường dữ liệu của cấu trúc bạn dùng toán tử '.'
 

Chúng ta thử với đoạn code sau tren IDE Online:

#include "stdio.h"
#include "string.h"

struct SinhVien{
    char hoten[50];
    char email[50];
    char chuyenNganh[30];
    double diemTrungBinh;
};
//Thay struct SinhVien = SinhVien
typedef struct SinhVien SinhVien;

int main(){
    SinhVien s;
    strcpy(s.hoten, "Tran Van An");
    strcpy(s.email, "tranvanadatvietlt@dvmail.com");
    strcpy(s.chuyenNganh, "Cong Nghe Thong Tin");
    s.diemTrungBinh = 8.1;
    printf("Thong tin sinh vien : \n");
    printf("Ho ten : %s\n", s.hoten);
    printf("Email : %s\n", s.email);
    printf("Lop : %s\n", s.chuyenNganh);
    printf("Diem Trung Binh : %.2lf\n", s.diemTrungBinh);
    return 0;
}

Đây là kết quả:

Dữ liệu kiểu cấu trúc trong lập trình C

Phần sau chúng ta sẽ áp dụng vào chương trình tào lao phiên bản 2.

Phần này chúng ta sẽ gải thích một số lệnh mới.

1. Trước hết là khai báo cấu trúc SinhVien

struct SinhVien{
    char hoten[50];
    char email[50];
    char chuyenNganh[30];
    double diemTrungBinh;
};

Chúng ta có thể thêm bất cứ thông tin gì, ví dụ địa chỉ, cấu trúc sẽ trở thành


struct SinhVien{
    char hoten[50];
    char email[50];
    char diaChi[60]
    char chuyenNganh[30];
    double diemTrungBinh;
};

2. Tiếp theo là lệnh:

typedef struct SinhVien SinhVien;


Trong C khi khai báo bạn cần thêm từ khóa struct ở trước, nếu bạn không muốn khai báo từ khóa struct mỗi khi dùng cấu trúc thì có thể typedef để định nghĩa lại kiểu cho cấu trúc.

Lệnh trên có nghĩa là thay vì phải khai báo struct SinhVien thì chúng ta có thể khai báo y như một biến là SinhVien

3. Lệnh tiếp theo:

SinhVien s; 

Ta khai báo một biến s với định dạng kiểu SinhVien

Ta hoàn toàn có thể khai báo:

struct SinhVien s;

Cả hai cách khai báo đều được vì chúng ta đã sử dụng typedef ở trên.

4. Hàm strcpy()

Hàm strcpy() copy nội dung từ chuỗi nguồn sang chuỗi đích và trả về con trỏ tới chuỗi đích sau khi copy xong.

Hàm này thuộc thư viện string.h

Cú pháp :

char* strcpy(char *dest, char *src);


Tham số :

    char *dest : Chuỗi đích
    char *src : Chuỗi nguồn 

Trong chương trình, chúng ta sử dụng hàm strcpy() để khởi tạo giá trị cho biến s.


Phần tiếp theo

Phần trước

Không có nhận xét nào:

Đăng nhận xét