2010-04-12 28 views
5

Tất cả những gì tôi có thể tìm thấy bằng cách sử dụng fopen() và fwrite() trong C là xóa tất cả nội dung và bắt đầu viết lại hoặc nối thêm vào cuối tệp. Nếu tôi cần phải đi đến một số bù đắp trong tập tin và ghi đè lên một vài byte?Làm cách nào để ghi đè lên X byte trên offset Y với fwrite()?

Điều đó có thể thực hiện được với một số chức năng không?

Trả lời

8

Bạn có thể mở tệp bằng tùy chọn "rb+" và sau đó sử dụng fseek với SEEK_SET để chuyển đến một vị trí cụ thể. Các rb+ mở nó cho cả đọc và viết dưới dạng tệp nhị phân (tệp phải tồn tại để nó thành công - nó sẽ không tạo tệp mới).

+0

Điều đó sẽ ghi đè chỉ các byte tôi muốn và sẽ không thêm vào? –

+0

Câu hỏi đặt ra là, nó sẽ loại bỏ phần còn lại của tập tin vượt quá những gì bạn đã viết? –

+0

@Nazgulled: Có - các vị trí SEEK_SET đến một byte bù đắp cụ thể trong tệp. SEEK_CUR cũng có thể được sử dụng để tìm cách bù đắp từ vị trí hiện tại. –

Các vấn đề liên quan