30/09/2018, 16:12
Thao tác với file trong lập trình C
Mọi người cho mình hỏi một số vấn đề này với (mình đã tìm trên mạng và không/chưa tìm thấy)
- Làm sao để di chuyển con trỏ đọc file đến vị trí mình muốn (ví dụ như đến dòng thứ n, tại vi trí xuất hiện ký tự ‘|’ đầu tiên/thứ2/thứ3)
- Làm sao để update thông tin trên file ngay tại con trỏ file đang trỏ tới? Cụ thể hơn là nếu file có n dòng, mỗi dòng chứa các nội dung: tên, ngày sinh, địa chỉ. Làm sao để sửa tên 1 người nào đó? (thao tác xóa, sửa từng phần nội dung file)
Cảm ơn m.n rất nhiều! ^^
Bài liên quan
Em sử dụng fseek
C không hỗ trợ cái này, em phải tự tìm postion đó bằng cách duyệt file cho tới khi nào gặp
\n
, tức là đến dòng mới.Đây là ví dụ anh tìm thấy để đếm dòng
Tương tự với tìm dòng.
Chia buồn với em là phải tự làm thôi.
Có vẻ như em đang tìm cách update thông tin của một danh sách, anh nghĩ em dùng cách lưu file nhị phân thì hay hơn.
Như thế em sẽ giải quyết được vấn đề 1, em không cần quan tâm đến việc đang ở dòng nào và cần di chuyển tới dòng nào.
Em nói cụ thể structure của em bao gồm những thuộc tính nào, anh sẽ đưa ra giải pháp cụ thể.
thank anh @ltt,
chương trình của em là chương trình học từ vựng tiếng anh, và struct của em bao gồm 2 thuộc tính là new_word và description thôi.
Khi người dùng cần nhập thêm từ mới thì mình cần sắp xếp theo alphabet để hiển thị khi cần.
Ngoài ra nếu từ đã trùng thì có lựa chọn update. Nếu dùng array rồi load toàn bộ nội dung file ra để sắp xếp hay update thì rất mất công và chương trình tốn nhiều bộ nhớ, vậy nên em muốn hỏi thêm về các thao tác xử lý trực tiếp trên file ^^
(Và 1 số chức năng test những từ đã học nữa)
Nếu là như vậy thì anh nghĩ em nên lưu ở dạng nhị phân. Cho 2 thuộc tính này có tổng số byte bằng 256 hoặc 512 hoặc 1024, hoặc là bội số của 2 để tăng tốc độ đọc ghi file, nhưng cũng có thể không cần thiết lắm vì bây giờ tốc độ đọc ghi khá là nhanh rồi.
Nếu em muốn truy vấn một phần tử nào thì em chỉ cần nhảy tới i*1024 là tới được.
Tuy nhiên nếu em làm từ điển thì anh nghĩ em nên quan tâm đến hash table. Tức là bảng băm để tăng tốc độ tìm kiếm.
Không phải từ điển anh ạ. Chỉ là chương trình học từ vựng theo phương pháp review thôi (assignment của em)
Lưu file ở dạng nhi phân là như nào anh nói cụ thể hơn một chút được không ạ?
Em chưa hiểu ý anh lắm ^^
Lưu file ở dạng nhị phân là lúc mở file mình chọn “mode” là
b
. Em lưu dữ liệu có cấu trúc thì chọn cái này cho nó nhanh, nhẹ, chuẩn