Maison >développement back-end >C++ >Comment puis-je déterminer avec précision la taille d'un fichier en C au lieu d'utiliser « tellg() » ?
Fonction tellg() et dimensionnement des fichiers
tellg() est une fonction en C utilisée pour récupérer la position actuelle dans un fichier. Cependant, il est important de noter que tellg() ne fournit pas la taille réelle du fichier en octets. Au lieu de cela, il renvoie une valeur de jeton qui peut être utilisée plus tard pour revenir à la même position.
Dans le code fourni, il semble y avoir un malentendu concernant le comportement attendu de tellg(). Le code utilise tellg() pour déterminer la taille du fichier, qui est ensuite utilisée pour allouer un tampon pour contenir le contenu du fichier. Cependant, tellg() ne doit pas être utilisé à cette fin.
Selon la spécification du langage C, tellg() renvoie une valeur de jeton spécifique à l'implémentation. Bien qu'il corresponde souvent au byte offset dans les systèmes Unix, ce comportement n'est pas garanti sous Windows. En mode texte, Windows peut renvoyer une valeur supérieure au nombre réel d'octets nécessaires pour atteindre la position actuelle.
Pour déterminer avec précision la taille d'un fichier, il est recommandé d'utiliser des méthodes alternatives, telles que :
#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
De plus, il y a plusieurs problèmes dans le code fourni :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!