Ví dụ
struct dia_chi
{
int so_nha;
char phuong[20]; char quan[15]; char thanh_pho[15];
} A,B;
Hoặc
struct
{
int so_nha;
Có thể bạn quan tâm!
- Cơ sở lập trình - Trường ĐH Thương mại - 9
- Cơ sở lập trình - Trường ĐH Thương mại - 10
- Cơ sở lập trình - Trường ĐH Thương mại - 11
- Cơ sở lập trình - Trường ĐH Thương mại - 13
- Cơ sở lập trình - Trường ĐH Thương mại - 14
Xem toàn bộ 113 trang tài liệu này.
char phuong[20]; char quan[15]; char thanh_pho[15];
} A,B;
struct sinh_vien
{
char ho_ten[30]; date ngay_sinh; char maSV[10];
};
Hoặc
struct
{
char ho_ten[30]; date ngay_sinh; char maSV[10];
} sv1,sv2;
07/2020 Cơ sở lập trình177
Lưu ý: Nếu sử dụng typedef để định nghĩa kiểu struct thì khi khai báo biến chỉ cần dùng tên kiểu (bỏ từ khóa struct)
Ví dụ
date ngay_sinh,ngay_nhap_hoc; dia_chi A, B;
sinh_vien X, Y;
07/2020 Cơ sở lập trình178
Cú pháp
Ten_cau_truc.ten_thanh_phan
Ten_cau_truc.ten_cau_truc.ten_thanh_phan
…
Cách 1: dùng khi biến hoặc mảng là thành phần trực tiếp của một cấu trúc
Ví dụ: A.phuong, A.quan, A.thanh_pho
Các cách khác: dùng khi biến hoặc mảng là thành phần trực tiếp của một cấu trúc mà bản thân cấu trúc này lại là thành phần của 1cấu trúc lớn hơn.
Ví dụ: X.ngay_sinh.ngay
07/2020 Cơ sở lập trình 179
Chú ý
Có thể sử dụng phép toán lấy địa chỉ đối với thành phần cấu trúc để nhập số liệu trực tiếp cho thành phần cấu trúc
Có thể gán hai biến cấu trúc cho nhau
Có thể khởi tạo cho biến cấu trúc bằng cách viết vào sau khai báo của chúng một danh sách các giá trị cho các thành phần.
07/2020 Cơ sở lập trình 180
5.3.1 Khai báo biến mảng cấu trúc
5.3.2 Truy nhập phần tử mảng cấu trúc
07/2020 Cơ sở lập trình 181
Cách khai báo: Tương tự như với các kiểu dữ liệu cơ sở, chỉ thêm từ khóa struct
Ví dụ
struct sinh_vien ds1[50],ds2[100];
struct dia_chi xom5[100];
07/2020 Cơ sở lập trình 182
Khởi tạo cho biến cấu trúc: tương tự mảng
Ví dụ
struct month
{
int number; char *name;
} year[] ={
{1,”january”},{2,”february”},…,{12,”december”}
}
Để xác định số phần tử của year ta có thể dùng toán tử sizeof: int n= sizeof(year)/sizeof(struct month);
07/2020 Cơ sở lập trình 183
Tương tự như mảng thông thường: thông qua tên và chỉ số của phần tử
Ví dụ
struct sinh_viên ds[50]; for (int i=0;i<50;i++)
{ fflush(stdin);gets(ds[i].ho_ten); scanf(“%d”,&ds[i].ngay_sinh.ngay); scanf(“%d”,&ds[i].ngay_sinh.ngay); scanf(“%d”,&ds[i].ngay_sinh.ngay); fflush(stdin); gets(ds[i].MaSV);
}
07/2020
Cơ sở lập trình 184
5.4.1 Kiểu enum (kiểu liệt kê)
5.4.2 Kiểu typedef
07/2020 Cơ sở lập trình 185
Ý nghĩa: định nghĩa kiểu dữ liệu bằng cách liệt kê ra tất cả các giá trị mà ta muốn có.
Cú pháp
enum name {// liệt kê các giá trị};
Trong đó enum là từ khóa, name là tên của kiểu
Ví dụ
enum ten_mua {xuan, ha, thu, dong};
enum ten_mua mua;
07/2020 Cơ sở lập trình 186
Đặc điểm
Các giá trị được liệt kê thực chất tương ứng là
một dãy số tự nhiên bắt đầu từ 0.
Ví dụ: xuan, ha, thu, dong tương ứng với 0, 1, 2, 3 printf(“%d”,thu); →in ra giá trị là 2.
Lưu ý: Không thể đọc trực tiếp và ghi ra giá trị của kiểu liệt kê, vì mỗi giá trị tương ứng với một số tự nhiên
07/2020 Cơ sở lập trình 187
Khái niệm: kiểu typedef là kiểu dữ liệu do người
dùng định nghĩa với từ khóa typedef.
Ý nghĩa
Cho phép đặt lại tên cho các kiểu dữ liệu đã tồn tại
Ví dụ: typedef int so_nguyen;
Làm cho chương trình dễ đọc, ngắn gọn và có thể dễ dàng chuyển mã code sang máy khác
Ví dụ:
int ds1[20],ds2[20],ds3[20],ds4[20];
typedef int ds[20]; // thay bằng
ds ds1,ds2,ds3,ds4;
kiểu struct →khai báo biến không cần từ khóa struct
07/2020 Cơ sở lập trình 188
5.5.1 Khái niệm và phân loại tệp
5.5.2 Các bước xử lý tệp
5.5.3 Một số hàm dùng chung cho các kiểu tệp (tự học)
5.5.4 Tệp nhị phân
5.5.5 Tệp văn bản
07/2020 Cơ sở lập trình 189
Khái niệm: Tệp là một tập hợp các dữ liệu có liên quan với nhau và có cùng kiểu được nhóm lại với nhau tạo thành một dãy. Chúng thường được lưu trong một thiết bị nhớ ngoài với một tên cụ thể.
Đặc điểm
So sánh với struct và mảng (kiểu dữ liệu từng phần
tử, số phần tử, lưu trữ, truy nhập)
Biến đệm (cửa sổ tệp), bộ nhớ đệm, EOF, feof (hàm)
Phân loại
Theo cách truy cập: tệp truy cập tuần tự và tệp truy cập trực tiếp (C chỉ định nghĩa tệp tuần tự)
Theo bản chất dữ liệu: tệp văn bản và tệp nhị phân
07/2020 Cơ sở lập trình 190
Khai báo biến tệp
Mở tệp (để đọc hoặc ghi dữ liệu)
Xử lý dữ liệu (đọc hoặc ghi dữ liệu)
Đóng tệp
07/2020 Cơ sở lập trình 191
Khai báo biến tệp
Cú pháp: FILE *name;
Trong đó:
▪ FILE: là từ khóa
▪ name: là tên con trỏ tệp (biến tệp)
Ví dụ
FILE *f;
07/2020 Cơ sở lập trình 192