Maison  >  Article  >  développement back-end  >  Comment lire tous les octets d’un fichier dans un tableau de caractères en C ?

Comment lire tous les octets d’un fichier dans un tableau de caractères en C ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-01 23:09:31840parcourir

How to Read All File Bytes into a Character Array in C  ?

Récupération de tous les octets d'un fichier dans un tableau de caractères en C

Cette question cherche à comprendre comment lire le contenu d'un fichier dans un caractère tableau, contournant les limitations de getline().

Solution :

Au lieu d'utiliser getline(), envisagez d'implémenter ifstream::read() pour lire un fichier sous forme de flux d'octets. Les étapes suivantes décrivent le processus :

  1. Ouverture du fichier :
<code class="cpp">std::ifstream infile("C:\MyFile.csv"); // consider std::ios_base::binary for binary reads</code>
  1. Détermination de la longueur du fichier :
<code class="cpp">infile.seekg(0, std::ios::end);
size_t length = infile.tellg();
infile.seekg(0, std::ios::beg);</code>
  1. Débordement de tampon Prévention :
<code class="cpp">if (length > sizeof(buffer)) {
    length = sizeof(buffer);
}</code>
  1. Lecture du dossier :
<code class="cpp">infile.read(buffer, length);</code>

Notes supplémentaires :

  • L'utilisation de seekg() et tellg() pour déterminer la taille du fichier n'est pas garantie. être exact mais fonctionne généralement.
  • L'ouverture du fichier en mode non binaire peut entraîner des traductions de caractères qui affectent la taille du tampon résultant.
  • Pour la lecture de fichiers en une seule fois, la réponse de Rémy Lebeau recommande d'utiliser std::vector et std::istreambuf_iterator pour une efficacité améliorée.
  • En cas de lectures en mémoire tampon, pensez à utiliser gcount() pour suivre le nombre réel de caractères lire.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn