Pek çok benzer soru var, ancak bu, özellikle de etrafta dolaştıktan sonra özellikle yanıtlayan hiçbir şey yok. Buraya:Bir dosyanın başlangıcını C cinsinden kırpmanın en iyi yolu nedir?
abcdefghijklmnopqrztuvwxyz: (ikili olması ve çok fazla büyük olabilir) bir dosya var ki Örneğin dosyanın başlangıcını kısaltmaın solunda bu dosyanın kısmı .. yani, diskteki dosyayı değiştirecek 7 bayt "kısaltılıyor ön" olmak:"değişmediğini" en doğru C iyi yolu nedir
hijklmnopqrztuvwxyz
Ben geçici dosyaları kaçınmak gerekir ve belleğe tüm dosyayı okumak için büyük bir tampon kullanmamayı tercih ederim. Düşündüğüm olası bir yöntem fopen'i "rb +" bayrağıyla kullanmaktır ve sürekli olarak ileri ve geri okuma ve yazma işlemlerini, başlangıçtan başlayarak baytları kopyalamak için ileri ve geri hareket ettirmek, sonra da EEOFFile değerini en sonunda kırpmaktır. Bu çok arama (muhtemelen verimsiz) gibi görünüyor.
başka yolu da iki kez aynı dosyayı fopen ve ilgili dosya işaretçileri ile fgetc ve fputc kullanmak olacaktır. Bu mümkün mü? başka yolları varsa
, ben hepsini okumak isteriz.
ben (iki DOSYA işaretçiler ile) iki kez dosyayı açmadan sona erdi. Bu çok hızlı oldu (bir göz açıp kapayıncaya kadar 2mb; benchmark). Fileno() ve ftell() ile ftruncate() kullandım. – snapfractalpop