Maison  >  Article  >  développement back-end  >  Comment lire des octets de fichier dans un tableau de caractères en C sans getline() ?

Comment lire des octets de fichier dans un tableau de caractères en C sans getline() ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-02 22:51:02865parcourir

How to Read File Bytes into a Char Array in C   Without getline()?

Comment récupérer des octets de fichier dans un tableau de caractères en C

Pour lire des octets de fichier dans un tableau de caractères sans utiliser getline(), pensez en utilisant ifstream::read(). Suivez ces étapes :

  1. Ouvrez le fichier :

    <code class="cpp">std::ifstream infile("C:\MyFile.csv");</code>
  2. Obtenez 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>
  3. Assurer la taille du tampon :

    <code class="cpp">if (length > sizeof (buffer)) {
     length = sizeof (buffer);
    }</code>
  4. Lire le fichier :

    <code class="cpp">infile.read(buffer, length);</code>

Notes supplémentaires :

  • Ouverture du fichier en mode binaire (par exemple, avec std::ios_base:: binaire) est recommandé pour une gestion précise des octets.
  • Bien que seekg() et tellg() soient généralement fiables, ils peuvent ne pas toujours fournir la taille exacte du fichier dans certains cas.
  • Pour lire l'intégralité du fichier en une seule opération et en gérant des fichiers volumineux, l'utilisation de std::vector et std::istreambuf_iterator peut offrir plus de flexibilité.

Approche mise à jour (2019) :

Pour tenir compte des erreurs potentielles lors de la lecture, envisagez l'approche suivante :

<code class="cpp">size_t chars_read;

if (!(infile.read(buffer, sizeof(buffer)))) {
    if (!infile.eof()) {
        // Handle error during reading
    }
}

chars_read = infile.gcount(); // Get actual number of bytes read</code>

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