Fungsi Tellg() dan Saiz Fail
tellg() ialah fungsi dalam C yang digunakan untuk mendapatkan semula kedudukan semasa dalam fail. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa tellg() tidak memberikan saiz sebenar fail dalam bait. Sebaliknya, ia mengembalikan nilai token yang boleh digunakan kemudian untuk mencari kembali ke kedudukan yang sama.
Dalam kod yang disediakan, nampaknya terdapat salah faham mengenai kelakuan yang dijangkakan tellg(). Kod ini menggunakan tellg() untuk menentukan saiz fail, yang kemudiannya digunakan untuk memperuntukkan penimbal untuk menyimpan kandungan fail. Walau bagaimanapun, tellg() tidak boleh dipercayai untuk tujuan ini.
Mengikut spesifikasi bahasa C, tellg() mengembalikan nilai token yang khusus untuk pelaksanaan. Walaupun ia sering sepadan dengan ofset bait dalam sistem Unix, tingkah laku ini tidak dijamin di bawah Windows. Dalam mod teks, Windows mungkin mengembalikan nilai yang lebih besar daripada bilangan bait sebenar yang diperlukan untuk mencapai kedudukan semasa.
Untuk menentukan saiz fail dengan tepat, adalah disyorkan untuk menggunakan kaedah alternatif, seperti:
#include <limits> ... file.ignore(std::numeric_limits<std::streamsize>::max()); std::streamsize length = file.gcount(); // Retrieve the size of the file in bytes file.clear(); // Reset the file stream file.seekg(0, std::ios_base::beg); // Return to the beginning of the file
Selain itu, terdapat beberapa isu dalam kod yang disediakan:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan Saiz Fail dengan Tepat dalam C Daripada Menggunakan `tellg()`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!