Bài tập đọc và ghi thông tin sinh viên vào file trong C

1. Bài tâp đọc và ghi ma trận vào file trong ngôn ngữ lập trình C

Bài tập này chúng ta sẽ sử dụng các kiến thức từ ngôn ngữ lập trình C như: cách nhập xuất văn bản trong ngôn ngữ lập trình C, cách dùng vòng lặp for trong C để duyệt qua từng sinh viên trong danh sách, cách sử dụng hàm trong C, các dùng struct, cách đọc và ghi file trong C.

Yêu cầu của bài tập đưa ra cho chúng ta là nhập thông tin của sinh viên từ bàn phím ghi vào file và lấy dữ liệu từ file in ra màn hình.

2. Lời giải

Để thực hiện bài toán này chúng ta cần có kiến thức cơ bản về ngôn ngữ lập trình C, các cách nhập xuất chuỗi cơ bản trong C, cách dùng vòng lặp for trong C để duyệt qua từng sinh viên trong danh sách, cách sử dụng hàm trong C, các dùng struct, cách đọc và ghi file trong C.

Để đọc và ghi file trong C chúng ta cần phải sử dụng các hàm nằm trong thư viện stdlid.h. Bạn có thể tìm hiểu về đọc ghi file nhiều hơn từ chương trình học của chúng tôi Tại Đây

Các bước thực hiện yêu cầu của bài tập nhập thông tin của sinh viên từ bàn phím ghi vào file và lấy dữ liệu từ file in ra màn hình bằng ngôn ngữ lập trình C như sau:

Bước 1: Khai báo cấu trúc struct SinhVien gồm có các thuộc tính: char MaSV[50](mã sinh viên), char TenSV[50](tên sinh viên), char Lop[50](lớp), float DTK(điểm tổng kết).

Bước 2: Khởi tạo hàm void ghifile() dùng để nhập thông tin sinh viên từ bàn phím rồi ghi vào file.

  • 1.1 Ta khai bao con trỏ kiểu file FILE *fp.
  • 1.2 Khai báo mảng kiểu SinhVien sv[100] và số sinh viên int n.
  • 1.3 Mở file ở chế độ w (chỉ ghi) fp = fopen(“laptrinhtudau.txt”,”w”).
  • 1.4 Kiểm tra file dùng if với điều kiện nếu fp==NULL thì báo lỗi vào kết thúc.
  • 1.5 Nhập vào sinh viên trong danh sách và dùng hàm fprintf() để ghi vào file.
  • 1.6 Dùng vòng lặp for bắt đầu từ int i=0, kết thúc khi i<n, mỗi lần lặp i tăng lên 1 dùng để kiểm soát từng sinh viên. Trong vòng lặp ta nhập dữ liệu cho từng sinh viên sv[i].
  • 1.7 Dùng vòng lặp for bắt đầu từ int i=0, kết thúc khi i<n, mỗi lần lặp i tăng lên 1 dùng để kiểm soát từng sinh viên. Trong vòng lặp ta nhập dữ liệu cho từng sinh viên sv[i]. Trong vòng lặp ta ghi dữ liệu của từng sinh viên sv[i] vào file.
  • 1.8 Dóng file.

Bước 2: Khởi tạo hàm void docfile() dùng để đọc dữ liệu từ file và hiển thị dữ liệu ra màn hình.

  • 2.1 Ta khai bao con trỏ kiểu file FILE *fp.
  • 2.2 Khai báo mảng kiểu SinhVien sv[100] và số sinh viên int n.
  • 2.3 Mở file ở chế độ r (chỉ đọc) fp = fopen(“laptrinhtudau.txt”,”r”).
  • 2.4 Kiểm tra file dùng if với điều kiện nếu fp==NULL thì báo lỗi vào kết thúc.
  • 2.5 Đọc dữ liệu từ file gán vào n bằng hàm fscanf.
  • 2.6 Dùng vòng lặp for bắt đầu từ int i=0, kết thúc khi i<n, mỗi lần lặp i tăng lên 1 dùng để kiểm soát từng sinh viên. Trong vòng lặp ta nhập dữ liệu cho từng sinh viên sv[i]. Trong vòng lặp ta đọc dữ liệu từ file gán vào từng sinh viên sv[i].
  • 2.7 Dùng vòng lặp for bắt đầu từ int i=0, kết thúc khi i<n, mỗi lần lặp i tăng lên 1 dùng để kiểm soát từng sinh viên. Trong vòng lặp ta nhập dữ liệu cho từng sinh viên sv[i]. Trong vòng lặp in dữ liệu của từng sinh viên sv[i] ra màn hình.
  • 2.8 Dóng file.

Bước 3: Trong hàm main ta gọi hai hàm docfile() và ghifile() rồi chạy chương trình.

Chương trình giải bài tập nhập thông tin của sinh viên từ bàn phím ghi vào file và lấy dữ liệu từ file in ra màn hình bằng ngôn ngữ lập trình C như sau:

#include <stdio.h>
#include <stdlib.h>
struct SinhVien{
    char MaSV[50];
    char TenSV[50];
    char Lop[50];
    float DTK;
};
void ghifile(){
    FILE *fp;//khai báo con tro co kieu file
    SinhVien sv[100];//mang sv kieu sinh vien
    int n;// so sinh vien
    //mo file o che do w
    fp = fopen("laptrinhtudau.txt","w");
    //kiem tra file
    if(fp==NULL){
        printf("Loi file!");
        return;
    }
    //nhap vao so hang cua ma tran
    printf("Nhap so sinh vien:");
    scanf("%d",&n);
    //ghi so sinh vien vao file
    fprintf(fp,"%d",n);
    fprintf(fp,"\n");
    //nhap thong tin cua tung sinh vien
    for(int i=0; i<n; i++){
        printf("\nNhap thong tin sinh vien thu %d:",i);
        printf("\nNhap ma sinh vien:");
        fflush(stdin);//xoa bo dem
        gets(sv[i].MaSV);
        printf("\nNhap ten sinh vien:");
        fflush(stdin);//xoa bo dem
        gets(sv[i].TenSV);
        printf("\nNhap lop:");
        fflush(stdin);//xoa bo dem
        gets(sv[i].Lop);
        printf("\nNhap diem tong ket:");
        scanf("%f", &sv[i].DTK);
    }
    //ghi thong tin cua tung sinh vien vao file
    for(int i=0; i<n; i++){
        fprintf(fp,"%s \t %s \t %s \t %f \n",sv[i].MaSV, sv[i].TenSV,sv[i].Lop,sv[i].DTK);
    }
    //dong file
    fclose(fp);
}
void docfile(){
    FILE *fp;//khai báo con tro co kieu file
    SinhVien sv[100];//maang sv kieu SinhVien
    int n;// so sinh vien
    //mo file o che do r
    fp = fopen("laptrinhtudau.txt","r");
    //kiem tra file
    if(fp==NULL){
        printf("Loi file!");
        return;
    }
    //doc du lieu tu file gan vao n
    fscanf(fp,"%d",&n);
    printf("So sinh vien la: %d\n",n);
    //doc du lieu tu file gan vao tung sinh vien thi i
    for(int i=0; i<n; i++){
        fscanf(fp,"%s%s%s%f",&sv[i].MaSV, &sv[i].TenSV,&sv[i].Lop,&sv[i].DTK);
    }
    //in ma tran ra man hinh
    printf("-----Danh sach sinh vien-----\n");
    printf("MaSV \t TenSv \t\t Lop \t DTK \n");
    for(int i=0; i<n; i++){
        
        printf("%s \t %s \t %s \t %f \n",sv[i].MaSV, sv[i].TenSV,sv[i].Lop,sv[i].DTK);
    }
    //dong file
    fclose(fp);
}
int main(){		
    ghifile();
    docfile();
}

Kết quả:

Nhap so sinh vien:2

Nhap thong tin sinh vien thu 0:
Nhap ma sinh vien:01

Nhap ten sinh vien:NguyenVanA

Nhap lop:CNTT1

Nhap diem tong ket:9

Nhap thong tin sinh vien thu 1:
Nhap ma sinh vien:02

Nhap ten sinh vien:ChuVanB

Nhap lop:CNPM2

Nhap diem tong ket:8
So sinh vien la: 2
-----Danh sach sinh vien-----
MaSV     TenSv           Lop     DTK
01       NguyenVanA      CNTT1   9.000000
02       ChuVanB         CNPM2   8.000000

3. Tổng kết

Sau khi làm bài tập này các bạn cần phải hiểu và nắm được những kiến thức sau:

  • Cách nhập xuất cơ bản trong ngôn ngữ lập trình C.
  • cách dùng vòng lặp for trong C để duyệt qua các sinh viên trong danh sách.
  • Cách đọc và ghi file trong C.
  • Đọc và ghi thông tin sinh viên trong C.
Tham Khảo Thêm
Bài Viết Mới
Laptrinhtudau.com