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 :

Lecture fichier par caractère & strcmp


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de YASIR
    Profil pro
    Inscrit en
    Février 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 101
    Par défaut Lecture fichier par caractère & strcmp
    Bonjour, j'aimerais connaitre la méthode pour pouvoir lire un fichier caractère par caractère SVP
    Les contenus des fichiers qui seront chargés seront certains du binaire, et j'aimerais savoir comment, par exemple s'il y a un fichier erroné dont le contenu est ...00011010110111B001010, comment peut-il détecter ce B qui est là par erreur ?
    Quelles fonctions dois-je utiliser ?
    Je dois peut être utiliser une d'entre elles memcmp, strcmp, strcoll, strncmp ? Mais pour lire chaque caractère pour le comparer je ne vois pas
    Merci

  2. #2
    Membre confirmé Avatar de Topeur
    Profil pro
    Inscrit en
    Février 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 91
    Par défaut Lecture fichier
    Quand on lit dans un fichier, il faut stocker quelque part ce que tu lis. que ca soit avec fgets ou fwrite, tu dois lui donner un tableau dans lequel il pourra écrire.

    Ce tableau, qui est en fait un char*, tu peux le parcourir ensuite a l'aide d'une boucle pour vérifier son contenu.
    Apparemment, si tu a un fichier binaire, tu dois avoir que des 0 et des 1, donc si tu obtiens quelque chose de différent alors il y aura une erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    char tab[100] = "01101B01";
    int i=0;
     
    while(i!='\0')
    {
       if(tab[i]=='0' || tab[i]=='1')
       {
         // cas d'une erreur
       }
    }
    Quelque chose de ce style devrait fonctionner je pense


    Par contre, tes fonctions tel que strcmp et autre ne peuvent fonctionner car elle testent des chaines de caractères or, il faut que tu fasses ton trainement morceau par morceau!

    J'espère ne pas mettre tromper

  3. #3
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par Topeur Voir le message
    Ce tableau, qui est en fait un char*, tu peux le parcourir ensuite a l'aide d'une boucle pour vérifier son contenu.
    Non, un tableau de caractère n'est PAS un pointeur sur char! Lorsque l'identificateur d'un tableau est utilisé au sein d'une expression, il y a certes conversion implicite du tableau en un pointeur sur son premier élément, mais tableaux et pointeurs sont deux choses bien distinctes.

    De plus, un fichier binaire n'est PAS un fichier texte contenant un suite de '1' et de '0', comme tu sembles le supposer das ton code plus haut. Il est possible de lire un fichier binaire byte par byte à l'aide de la fonction fread(), déclarée dans le fichier d'en-tête standard stdio.h, et de stocker le résultat de cette lecture dans un tableau de unsigned char. L'information contenue dans ce tableau n'a pas de signification en soit, à moins que tu possèdes la spécification du format utilisé par le fichier. Tu pourras ainsi décoder les informations stockées dans ton tableau.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  4. #4
    Membre confirmé Avatar de YASIR
    Profil pro
    Inscrit en
    Février 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 101
    Par défaut
    Merci à vous deux, pour ces réponses très complètes, je vais travailler ça et je reviendrai.

    Merci encore

  5. #5
    Membre confirmé Avatar de YASIR
    Profil pro
    Inscrit en
    Février 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 101
    Par défaut
    Et je voulais vous demander, dois-je procéder de la même manière pour faire la même chose mais dans le cas ou c'est un fichier texte contenant une suite de 0 et de 1 justement ?

  6. #6
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par YASIR Voir le message
    Et je voulais vous demander, dois-je procéder de la même manière pour faire la même chose mais dans le cas ou c'est un fichier texte contenant une suite de 0 et de 1 justement ?
    Quel intérêt d'avoir un tel fichier? Pour un fichier texte, tu peux faire une lecture ligne par ligne avec fgets() ou caractère par caractère avec fgetc().

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme lecture fichier par fichier
    Par sousou12 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 01/07/2013, 22h02
  2. Réponses: 20
    Dernier message: 09/02/2006, 09h45
  3. Réponses: 1
    Dernier message: 26/01/2006, 18h16
  4. [debutant]lecture fichier ligne par ligne
    Par Battosaiii dans le forum C
    Réponses: 2
    Dernier message: 13/11/2005, 19h02

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