File là tập hợp bản ghi hoặc vị trí trên ổ cứng lưu trữ dữ liệu vĩnh viễn.
Tại sao cần File?
- Dữ liệu mất khi chương trình kết thúc.
- Lưu vào file giữ dữ liệu vĩnh viễn.
- Dễ dàng nhập lượng dữ liệu lớn.
- Truy cập nội dung file bằng vài lệnh đơn giản.
- Di chuyển dữ liệu giữa máy tính dễ dàng.
- C cung cấp nhiều cách truy cập file.
Các thao tác trên File
- Đặt tên file
- Mở file
- Đọc từ file
- Ghi vào file
- Đóng file
Cú pháp
Khai báo con trỏ file:
FILE *File_pointer; // Ví dụ: FILE *fptr;
Mở file chế độ ghi (write):
FILE *fp;
fp = fopen("sample.txt", "w");
- Nếu file không tồn tại: tạo file mới.
- Nếu file tồn tại: nội dung cũ bị xóa, ghi nội dung mới.
Chương trình 1: Lưu thông tin sinh viên
#include <stdio.h>
#include <stdlib.h>
int main() {
char name[50];
int marks, i, num;
printf("Nhập số lượng sinh viên: ");
scanf("%d", &num);
FILE *fptr = fopen("std.txt", "w");
if (fptr == NULL) {
printf("Lỗi mở file!\n");
exit(1);
}
for (i = 0; i < num; ++i) {
printf("Sinh viên %d\nNhập tên: ", i+1);
scanf("%s", name);
printf("Nhập điểm: ");
scanf("%d", &marks);
fprintf(fptr, "\nName: %s \nMarks=%d \n", name, marks);
}
fclose(fptr);
return 0;
}
Kết quả chạy chương trình 1
Nhập số lượng sinh viên: 3
Sinh viên 1
Nhập tên: lucky
Nhập điểm: 59
Sinh viên 2
Nhập tên: pinky
Nhập điểm: 89
Sinh viên 3
Nhập tên: bob
Nhập điểm: 45
Chương trình 2: Lưu thông tin nhân viên
#include <stdio.h>
int main() {
FILE *fp;
int eno;
char ename[30];
float sal;
fp = fopen("emp.txt", "w");
printf("Nhập thông tin: mã, tên, lương: ");
scanf("%d %s %f", &eno, ename, &sal);
fprintf(fp, "%d %s %f", eno, ename, sal);
fclose(fp);
fp = fopen("emp.txt", "r");
fscanf(fp, "%d %s %f", &eno, ename, &sal);
printf("Mã nhân viên: %d\n", eno);
printf("Tên nhân viên: %s\n", ename);
printf("Lương: %f\n", sal);
fclose(fp);
return 0;
}
Kết quả chạy chương trình 2
Nhập thông tin: mã, tên, lương: 1 Pinky 34000
Mã nhân viên: 1
Tên nhân viên: Pinky
Lương: 34000.000000