Có nhiều câu hỏi tương tự, nhưng không có câu trả lời cụ thể sau khi googling xung quanh khá một chút. Ở đây đi:Cách tốt nhất để cắt bớt phần đầu của một tập tin trong C là gì?
Giả sử chúng ta có một tập tin (có thể là nhị phân, và lớn hơn nhiều quá):
abcdefghijklmnopqrztuvwxyz
gì là cách tốt nhất trong C để "di chuyển" quyền nhất phần của tập tin này sang bên trái, cắt bỏ phần đầu của tập tin .. như vậy, ví dụ, "phía trước cắt xén" 7 byte sẽ thay đổi các tập tin trên đĩa là:
hijklmnopqrztuvwxyz
Tôi phải tránh các tệp tạm thời và không muốn sử dụng bộ đệm lớn để đọc toàn bộ tệp vào bộ nhớ. Một phương pháp có thể tôi nghĩ là sử dụng fopen với cờ "rb +", và liên tục fseek qua lại đọc và ghi để sao chép byte bắt đầu từ offset đến đầu, sau đó setEndOfFile để cắt ngắn ở cuối. Điều đó có vẻ là rất nhiều tìm kiếm (có thể không hiệu quả).
Một cách khác là để fopen cùng một tệp hai lần, và sử dụng fgetc và fputc với các con trỏ tệp tương ứng. Điều này thậm chí có thể?
Nếu có nhiều cách khác, tôi muốn đọc tất cả chúng.
Tôi đã mở tệp hai lần (với hai con trỏ FILE). Điều này rất nhanh (~ 2mb trong nháy mắt, không chuẩn). Tôi đã sử dụng ftruncate() với fileno() và ftell(). – snapfractalpop