Xóa dữ liệu trong file text C#

Xóa nội dung cũ của file trước khi ghi xuống nội dung mới trong C?

Chào các bạn, mình gặp vấn đề thế này, trong chương trình của mình có rất nhiều câu lệnh ghi nội dung xuống file nằm rải rác ở các hàm khác nhau.

FILE *f = fopen[fileName, "w"]; // write - ghi đè
FILE *f = fopen[fileName, "a"]; // append - thêm vào

Khi đó nếu mình chọn cách ghi file là ghi đè [w] thì nó chỉ ghi vào file ở dòng lệnh cuối cùng, ví dụ:

fprint[f, "Pi"];
fprint[f, "Po"];

Thì chỉ có mỗi Po được ghi xuống file, còn nội dung trước đó không còn nữa.

Nếu mình chọn cách ghi file là thêm vào [a] thì những lần chạy chương trình tiếp theo, nội dung cũ của file không được xóa trước khi thêm nội dung mới vào, mỗi lần chạy mình phải xóa file rất phiền phức.

Các bạn có giải pháp nào vừa khắc phục được chuyện không phải xóa file cũ trước khi ghi nội dung mới mà nội dung còn phải được ghi đầy đủ, không bị ghi đè nữa không? Rất cảm ơn sự giúp đỡ của các bạn.

Bạn có thể sử dụng cả hai, đầu tiên sử dụng chế độ w để xóa nội dung cũ trong file [nếu có] và sau đó sử dụng chế độ a để thêm nội dung mới vào file ở các câu lệnh tiếp theo.

Có thể tạo một hàm có chức năng xóa nội dung [cũ] file như sau,

void clearFileContent[const char *filePath] {
    FILE *f = fopen[filePath, "w"];
    if [f == NULL] {
        printf["Can not open file %s to erase data.\n", filePath];
        return;
    }
    fclose[f];
}

Gọi hàm này ở đầu chương trình, hàm sẽ xóa nội dung trước đó của file và để lại một file trống rỗng, lúc này bạn có thể thoải mái sử dụng câu lệnh ghi file với chế độ a,

FILE *f = fopen[fileName, "a"];

Chương trình chính minh họa,

int main[] {
    clearFileContent["file.txt"];

    FILE *f = fopen["file.txt", "a"];
    fprintf[f, "Pi"];
    fprintf[f, "Po"];

    return 0;
}

đã đăng 3.8 năm trước bởi

đã bổ sung 3.8 năm trước bởi

Bạn chưa đăng nhập, vui lòng đăng nhập để thêm câu trả lời.

Bạn đang thắc mắc? Ghi câu hỏi của bạn và đăng ở chế độ cộng đồng [?]

Tôi đang lập trình trên C ++. Trong mã của mình, tôi tạo một tệp văn bản, ghi dữ liệu vào tệp và đọc từ tệp bằng luồng, sau khi hoàn thành trình tự, tôi muốn xóa tất cả dữ liệu bên trong tệp txt. Ai đó có thể cho tôi biết lệnh để xóa dữ liệu trong tệp txt. Cảm ơn bạn

  • c++
  • fstream

40 hữu ích 1 bình luận 170k xem chia sẻ

answer

69

Nếu bạn chỉ mở tệp để viết bằng tùy chọn cắt ngắn, bạn sẽ xóa nội dung.

std::ofstream ofs;
ofs.open["test.txt", std::ofstream::out | std::ofstream::trunc];
ofs.close[];

//www.cplusplus.com/reference/fstream/ofstream/open/

69 hữu ích 5 bình luận chia sẻ

answer

6

Nếu bạn đặt cờ trunc.

#include

using namespace std;

fstream ofs;

int main[]{
ofs.open["test.txt", ios::out | ios::trunc];
ofs

Chủ Đề