Input/Output Fail Perduaan
Dalam C , membaca dan menulis fail binari melibatkan penggunaan mekanisme input/output fail khusus untuk mengendalikan data binari. Walaupun kod yang disediakan cuba untuk mencapai ini, ia menghadapi masalah di mana penimbal output hanya menangkap sebahagian terhad kandungan fail.
C Penyelesaian:
Untuk pendekatan yang lebih cekap dan patuh C, pertimbangkan untuk menggunakan coretan kod berikut:
#include <fstream> #include <iterator> #include <algorithm> int main() { std::ifstream input("C:\Final.gif", std::ios::binary); std::ofstream output("C:\myfile.gif", std::ios::binary); std::copy( std::istreambuf_iterator<char>(input), std::istreambuf_iterator<char>(), std::ostreambuf_iterator<char>(output) ); }
Dalam kod yang disemak ini, std::fungsi copy digunakan untuk memindahkan kandungan fail binari dengan cekap daripada input strim input kepada output strim output. Pendekatan ini memastikan bahawa keseluruhan kandungan Final.gif disalin dengan tepat ke myfile.gif.
Penyelesaian Penimbalan Alternatif:
Jika anda memerlukan akses kepada data dalam penimbal untuk pengubahsuaian, anda boleh menggunakan kod berikut:
#include <fstream> #include <iterator> #include <vector> int main() { std::ifstream input("C:\Final.gif", std::ios::binary); // Copies entire file into a buffer std::vector<unsigned char> buffer(std::istreambuf_iterator<char>(input), {}); }
Di sini, keseluruhan kandungan fail input dibaca ke dalam penimbal penimbal vektor, membolehkan pengubahsuaian pada data binari sebelum operasi output yang berpotensi.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyalin atau Mengubah Suai Fail Binari dengan Cekap dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!