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 d'un fichier avec read


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 27
    Par défaut lecture d'un fichier avec read
    Bonjour à tous, je dois implémenter une fonction recherchant une chaîne de caractères dans un fichier à l'aide de la méthode read, mon problème se situe au niveau du parcours du fichier, voilà comment je m'y prends

    je lis le fichier dont le fileDescriptor s'appelle op, je stock l'octet lu à &c et je lis les octets uns par uns

    while(read(op, &c, 1) > 0 )
    {
    if (*c == '\n')

    /*traitement de l'information*/
    }


    seulement voilà, cette méthode ne reconnait pas les '\n' ni aucun autre caractère dailleurs! quelqu'un a-t-il déjà fait face à ce genre de problème?

  2. #2
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par seb__
    Bonjour à tous, je dois implémenter une fonction recherchant une chaîne de caractères dans un fichier à l'aide de la méthode read, mon problème se situe au niveau du parcours du fichier, voilà comment je m'y prends
    Pourquoi utilises-tu les fonctions open, read, etc. ? Les fonctions standards fopen, fread, fgetc, etc.. seraient plus indiquees.

    Citation Envoyé par seb__
    je lis le fichier dont le fileDescriptor s'appelle op, je stock l'octet lu à &c et je lis les octets uns par uns

    while(read(op, &c, 1) > 0 )
    {
    if (*c == '\n')

    /*traitement de l'information*/
    }


    seulement voilà, cette méthode ne reconnait pas les '\n' ni aucun autre caractère dailleurs! quelqu'un a-t-il déjà fait face à ce genre de problème?
    N'ayant pas tout le code je ne peux que faire une suppositon, mais a priori c'est plutot :
    if(c == '\n')

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par seb__
    Bonjour à tous, je dois implémenter une fonction recherchant une chaîne de caractères dans un fichier à l'aide de la méthode read, mon problème se situe au niveau du parcours du fichier, voilà comment je m'y prends

    je lis le fichier dont le fileDescriptor s'appelle op, je stock l'octet lu à &c et je lis les octets uns par uns
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while(read(op, &c, 1) > 0 )
    {
    if (*c == '\n')
     
    /*traitement de l'information*/
    }
    Trop compliqué, non portable et probablement faux (*c ? pourquoi ? Quel est le type de c ?).

    La méthode 'canonique' utilise fgetc() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
       int c;
       while((c = fgetc(op)) != EOF )
       {
          if (c == '\n')
     
          /*traitement de l'information*/
    }
    Bien sûr, le fichier a été ouvert en mode texte avec fopen().

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 27
    Par défaut
    je dois utiliser la méthode read, enfait je dois realiser cette fonction avec différents types de methodes, l'une en lisant octet par octet, l'autre en lisant un flux, et l'autre en utilisant les fichiers mappés en mémoire. dans la lecture octet par octet, le professeur nous a demandé d'utiliser read.C'est donc dans un cadre pédagogique

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 27
    Par défaut
    d'ailleurs est-ce que vous pourriez me dire quelle est la méthode en C permettant de calculer le temps d'exécution d'un algorithme? comme "tic tac" dans matlab ou qqch du genre? le but étant de comparer l'efficacité biensur

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 27
    Par défaut
    j'ai trouvé la solution à mon problème! rien de tel qu'une petite pause pr mettre ses idées au clair!

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par seb__
    d'ailleurs est-ce que vous pourriez me dire quelle est la méthode en C permettant de calculer le temps d'exécution d'un algorithme? comme "tic tac" dans matlab ou qqch du genre? le but étant de comparer l'efficacité biensur
    clock() et la constante CLOCKS_PER_SECOND (<time.h>) permettent ça. La résolution n'étant pas toujours suffisante, il faut parfois faire un grand nombre de tests pour avoir une réponse sugnificative (et encore, avec les caches et les pipelines, c'est pas gagné...)

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

Discussions similaires

  1. Probleme de lecture d'un fichier avec caractères speciaux
    Par bygui dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 26/06/2006, 09h35
  2. Lecture d'un fichier avec Excel . .
    Par Flow_75 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/06/2006, 21h59
  3. Delphi: Lecture d'un fichier avec un tableau dynamique
    Par grégoire2 dans le forum Langage
    Réponses: 8
    Dernier message: 10/02/2006, 18h50
  4. Problème lors de la lecture d'un fichier avec Input...
    Par Kronoob dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 18/11/2005, 18h55
  5. Réponses: 20
    Dernier message: 25/09/2005, 15h07

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