01/10/2018, 08:30

Càn giúp đỡ xóa dữ liệu trong tệp trong C++

Em cũng đang làm quản lý về sinh viên bằng file.
Em làm hết tất cả " thêm, sữa, tìm kiếm, xóa" .nhưng em làm tác động trực tiếp đến file, không đọc dữ liệu ra bộ nhớ vào mảng hay cấu trúc. vì em nghỉ giả sử mình có hơn 1000 sinh viên thì sau: mỗi lần xóa phải đọc hết tất cả 1000 sinh viên đó lên rồi thao tác xong lại ghi vào file thì phải nói là khó khăn, làm chương trình rất nặng. em làm đc mấy phần kia trực tiếp trên file.
nhưng còn có hàm xóa một sinh viên trực tiếp trên file thì không dc.
em có ý định là:
giã sử mình có n sinh viên, muốn xóa sinh viên thứ i thì em thay thế thằng i+1 cho thằng i và cứ thế cho đến cuối file. nhưng khi kiểm tra lại thì ngặt một nỗi là cuối file có 2 phần tử trùng nhau vì vòng lặp chạy tới cuối thì sinh viên(n-1)= sinh vien (n) nên xuất hiện (n-1) và (n) trùng nhau. lúc đầu có n sinh viên, nhưng khi xóa thì phải còn n-1 thôi.
làm sao mình xóa bỏ dc thằng thứ n dc ah.

Nguyễn Văn Tâm viết 10:41 ngày 01/10/2018

Đơn giản là bạn ghi ký tự kết thúc file EOF vào sau phần tử n-1 là được
Tuy nhiên, mình nghĩ thuật toán của bạn có lẽ không hiệu quả vì tuy là việc thêm sửa xóa trực tiếp trên file giúp chương trình chạy tốn ít RAM hơn, nhưng việc đọc ghi trên file là rất tốn kém. Thật ra thông tin của 1000 sinh viên thì không hề lớn, do đó hoàn toàn có thể khởi tạo ngay trên RAM.

Tao Không Ngu. viết 10:33 ngày 01/10/2018

HI huyentrang.
Bạn cần tìm hiểu vai trò của các phần lưu trữ của máy tính trước đã.
File có thể lưu trữ lâu dài nhưng thời gian đọc và truy vấn lây tuần tự (Đọc từng byte một liên tiếp.)
Bạn có thể tham khảo các kỹ thuật sử lý trên cơ sở dữ liệu để làm. Con theo mình thì nên load lên ram trước đã.

Bài liên quan
0