IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

[Fichier] Difference entre une ouverture de fichier binaire et asccii?


Sujet :

C

  1. #1
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut [Fichier] Difference entre une ouverture de fichier binaire et asccii?
    Bonjour,
    Es que quelqu'un connait la raison d'avoir deux type d'ouverture de fichier (binaire et ascii)?
    Ce que je ne comprend pas, c'est pourquoi :
    - en mode ascii : les opérateurs binaire ne fonctionne pas correctement
    - en mode binaire : les opérateurs binaire et ascii fonctionne.

    C'est n'est pas la différence binaire/ASCII qui me gêne, mais la raison de ne pas ouvrir tous les fichier en binaire? puisse que autant les opérateurs binaire que ascii fonctionne.

    La seule raison que je vois serait des optimisations, mais je ne vois pas ou

    merci

  2. #2
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Lors qu'on ouvre le fichier en mode texte, le runtime effectue les appels systemes et les transformations necessaires pour lire des fichiers textes de l'OS. Pour Unix, il n'y a rien de particulier. Pour Windows, il faut -- en lecture -- simplement(*) transformer les paires CR - LF en \n et (a ce qu'il me semble, je ne suis pas un specialiste de Windows) interpreter un SUB (alias CTRL-Z) comme fin de fichier.

    Pour d'autres systemes moins repandu, ce peut etre plus fortement different. Utiliser une API differente de pour les fichiers binaires, transformer les lignes notee par un prefixe de taille en contenu + \n, supprimer du padding parce que toutes les lignes ont la meme longueur,...

    (*) De maniere tres amusante -- et relativement perturbante -- les conversions de jeu de caracteres impliquees par la locale sont faites aussi pour les fichiers binaires.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  3. #3
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    La difference majeure entre binaire et texte est l'interpretation du '\n'. Sous Windows, c'est en fait deux caracteres ('\r''\n'). Sous Unix et equivalents, c'est un seul caractere.

    - en mode ascii : les opérateurs binaire ne fonctionne pas correctement
    - en mode binaire : les opérateurs binaire et ascii fonctionne.
    Qu'est-ce que tu veux dire par "operateurs binaires" ?

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par DaZumba
    Qu'est-ce que tu veux dire par "operateurs binaires" ?
    fread et fwrite

  5. #5
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par Mongaulois
    fread et fwrite
    Ils ne sont en rien reserves aux fichiers binaires tout comme les autres fonctions ne sont pas reservees aux fichiers textes.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    Ils ne sont en rien reserves aux fichiers binaires tout comme les autres fonctions ne sont pas reservees aux fichiers textes.
    Que fait fread et fwrite avec du texte?

  7. #7
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par Mongaulois
    Que fait fread et fwrite avec du texte?
    La meme chose qu'une boucle adequate faisant des fgetc et des fputc.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  8. #8
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Citation Envoyé par Mongaulois
    fread et fwrite
    Petit point de vocabulaire pour qu'on te comprenne mieux la prochaine fois : ce sont des fonctions, pas des operateurs.

  9. #9
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par DaZumba
    Petit point de vocabulaire pour qu'on te comprenne mieux la prochaine fois : ce sont des fonctions, pas des operateurs.
    Dsl, mais sur le coup je voyait pas comment les appeler

    merci. Pour les infos. Je comprend mieux les problèmes de lecture (sous windows) qu'il peut y avoir entre le mode binaire et texte.

  10. #10
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Il me semble que c'était aussi le cas sous Mac avant la sortie de MacOS X, car à l'époque les fins de ligne étaient enregistrées en tant que \r, au lieu de \n.

    Edit: Et tant qu'on y est: Why is the line terminator CR+LF?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #11
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par Médinoc
    Il me semble que c'était aussi le cas sous Mac avant la sortie de MacOS X, car à l'époque les fins de ligne étaient enregistrées en tant que \r, au lieu de \n.

    Edit: Et tant qu'on y est: Why is the line terminator CR+LF?
    C'est plus complique que cela. Certains equipements avaient besoin de CR-LF, d'autres uniquement de CR, d'autre uniquement de LF, d'autres avaient aussi besoin d'une serie de caracteres de padding (au du moins un debit pas trop eleve pour laisser le temps a la tete de revenir), ... la technique de unix, avoir une representation abstraite qui apres est transformee correctement pour le terminal est donc la bonne. A noter que comme je l'ai deja ecrit, d'autres OS ne representent meme pas CR-LF dans les fichiers textes mais stockent par exemple la longueur de la ligne ou utilisent des lignes de longueur fixe.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  12. #12
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Mongaulois
    Bonjour,
    Es que quelqu'un connait la raison d'avoir deux type d'ouverture de fichier (binaire et ascii)?
    C'est historique.

    http://emmanuel-delahaye.developpez....s.htm#fichiers
    Pas de Wi-Fi à la maison : CPL

  13. #13
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    donc, si j'ai bien tout compris, la différence est dans le fait de géré les différente definition du retour chariot et de la fin de fichier.
    Et donc pour un retour chariot windows (2 caractère)
    - le mode text va lire les deux caractère en un seule
    - le mode binaire va les lire un par un (d'ou les problèmes possible pour lire du text en mode binaire)

  14. #14
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Mongaulois
    donc, si j'ai bien tout compris, la différence est dans le fait de géré les différente definition du retour chariot et de la fin de fichier.<...>
    Pour les systèmes les plus courants, oui. Pour les autres, je ne sais pas...

    Il n'y a pas trop de questions à se poser. Si le fichier est du texte, il se manipule en mode texte ("r", "w", "a"), sinon, on utilise le mode binaire ("rb", "wb", "ab").
    Pas de Wi-Fi à la maison : CPL

  15. #15
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Pour les systèmes les plus courants, oui. Pour les autres, je ne sais pas...

    Il n'y a pas trop de questions à se poser. Si le fichier est du texte, il se manipule en mode texte ("r", "w", "a"), sinon, on utilise le mode binaire ("rb", "wb", "ab").
    ca c'est sur. Mais parfois des fichiers binaire ont une partie texte (exemple: en-tète des format binaire des ppm/pgm...). Si on lit cette partie comme un fichier texte, il arrive que la partie binaire soit erroné. Sous windows, j'ai eu ce problème, c'était le dernier "\n" qui n'était pas toujours bien lue...
    C'est assez drôle de voir une image qui devient rose au lieu de vert

  16. #16
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Mongaulois
    ca c'est sur. Mais parfois des fichiers binaire ont une partie texte
    Si un fichier n'est pas complètement texte, c'est qu'il est binaire. Il faut alors le traiter comme tel.
    Pas de Wi-Fi à la maison : CPL

  17. #17
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Si un fichier n'est pas complètement texte, c'est qu'il est binaire. Il faut alors le traiter comme tel.
    Je n'ai pas dit le contraire, mais ca explique que parfois il y est des problème dans le traitement de la partie ascii d'un fichier binaire. On est pas responsable de la façon dont le fichier est écrit. Et c'est ce problème qui peut faire perdre 1/2 journé pour rien

  18. #18
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Mongaulois
    Je n'ai pas dit le contraire, mais ca explique que parfois il y est des problème dans le traitement de la partie ascii d'un fichier binaire. On est pas responsable de la façon dont le fichier est écrit. Et c'est ce problème qui peut faire perdre 1/2 journé pour rien
    Le principe, c'est de réfléchir avant d'agir, donc de lire la doc du fichier, par exemple... 'ASCII' ne signifie pas forcément fichier texte....
    Pas de Wi-Fi à la maison : CPL

  19. #19
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Le principe, c'est de réfléchir avant d'agir, donc de lire la doc du fichier, par exemple... 'ASCII' ne signifie pas forcément fichier texte....
    Malheureusement tous le monde ne le fait pas.
    Toujours comme exemple, les formats binaire de ppm/pgm sont bien défini, et il y as des fichiers ou il y as les deux caractères de retour à la ligne. J'y peut rien, c'est un peu n'importe quoi je suis d'accord, et quand ça t'arrive bien tu cherche longtemps.

  20. #20
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Mongaulois
    Malheureusement tous le monde ne le fait pas.
    Peu importe. Qu'est-ce qui t'empêche de le faire, toi ?
    Pas de Wi-Fi à la maison : CPL

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Ouverture de fichiers Autocad dans une base de données
    Par julienrem dans le forum Access
    Réponses: 1
    Dernier message: 01/06/2010, 09h29
  2. Réponses: 9
    Dernier message: 20/06/2007, 13h50
  3. [VB 6] Difference entre write et print - fichiers
    Par Chocapic dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 02/06/2006, 16h03
  4. Réponses: 9
    Dernier message: 04/03/2006, 20h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo