Qu'est-ce que EOF pour les fichiers binaires? Condition? Personnage?

J'ai réussi jusqu'ici avec la connaissance que EOF est un caractère spécial inséré automatiquement à la fin d'un fichier texte pour indiquer à sa fin. Mais maintenant, je ressens le besoin de plus de précisions sur ce point. J'ai vérifié sur Google et la page de Wikipedia pour EOF mais ils ne pouvaient pas répondre à la question suivante, et il n'y a pas exact de Débordement de Pile liens pour ce soit. Merci donc de m'aider sur ce point:

  • Mon livre dit que le mode binaire des fichiers de garder une trace de la fin de fichier à partir du nombre de caractères présents dans le répertoire du fichier. (Contrairement à des fichiers texte qui ont un caractère EOF pour marquer la fin). Alors, quelle est l'histoire de EOF dans le contexte de fichiers binaires? Je suis confondu parce que, dans le programme suivant, j'ai réussi à utiliser !=EOF de comparaison lors de la lecture d'un .exe fichier en mode binaire:
     #include<stdio.h>
     #include<stdlib.h>
    
     int main()
     {
    
      int ch;   
      FILE *fp1,*fp2;
    
      fp1=fopen("source.exe","rb");
      fp2=fopen("dest.exe","wb");
    
      if(fp1==NULL||fp2==NULL)
      {
      printf("Error opening files");
      exit(-1);
      }
    
      while((ch=getc(fp1))!=EOF)
      putc(ch,fp2);
    
      fclose(fp1);
      fclose(fp2);
    
      }
  • Est EOF un caractère spécial"? Ou est-ce un condition comme dit Wikipedia, une condition où l'ordinateur sait quand le retour d'une valeur particulière comme -1 (EOF sur mon ordinateur)? Exemple de "l'état" de l'être, quand un personnage-fonction de lecture a fini de lire tous les caractères, ou lorsque le caractère/la chaîne de fonctions d'e/S la rencontre d'une erreur de lecture/écriture?

    Fait intéressant, le Débordement de la Pile d'étiquette pour EOF mélangé ces deux définitions de la EOF. La balise pour EOF dit "Dans le domaine de la programmation, EOF est une séquence d'octets (ou un chacracter), qui indique qu'il n'y a pas plus de contenu après cela."alors qu'il est également dit dans la section "à propos" qui "Fin de fichier (couramment abrégé EOF) est une condition dans un système d'exploitation d'ordinateur, où plus de données peuvent être lues à partir d'une source de données. La source de données est généralement appelé un fichier ou un flux."

Mais j'ai un fort sentiment EOF ne sera pas un personnage comme tous les autres de la fonction semble être de retour quand il rencontre une erreur lors de l'I/O.

Ça serait vraiment gentil de votre part si vous pouvez effacer la question pour moi.

source d'informationauteur Thokchom