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 :

Question :fichier texte en C ?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 14
    Par défaut Question :fichier texte en C ?
    bonjour à tous,

    je voudrais faire un programme qui permet d'afficher des statistiques sur un fichier texte dont le nom est entré par l'usager le programme doit :
    1 -saisir le nom d'un fichier( )
    2.afficher
    -la taille du fichier
    -le nombres des lignes dans le fichier
    -le nombre que le caractère S se trouve dans le fichier ( )

    je me bloque sur la taille et nombres de lignes ,

    Q: existe-t-il une fonction en C qui permet de retourner la taille d'un fichier texte ?
    si oui est-elle ftell(fichier) ?

    et aussi pour la taille je crois que je dois conter toutes les caractères après je le multiplie par 8 pour avoir (la taille en octets) ..?

    merci (je suis débutant ) SVP soyez concis dans vos réponse .

  2. #2
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Salut

    Tu dois ouvrir le fichier et le parcourir caractere par caractere grace à fgetc()
    Ainsi tu pouras avoir le nombre de caracteres total, le nombre de sauts de ligne, et le nombre de S

  3. #3
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635

  4. #4
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    alors pour les fichiers, je te conseillerais de lire ceci : http://c.developpez.com/faq/c/?page=fichiers ensuite, pour avoir la taille d'un fichier texte en octet, il te suffit de compter le nombre de caractère, si tu multiplie par 8, tu auras la taille en bits (c'est TRES PEU utile pour ne pas dire complètement inutile )
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  5. #5
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 14
    Par défaut
    Citation Envoyé par Gruik
    Salut

    Tu dois ouvrir le fichier et le parcourir caractere par caractere grace à fgetc()
    Ainsi tu pouras avoir le nombre de caracteres total, le nombre de sauts de ligne, et le nombre de S
    oui je vais avoir le nombre de caracteres total et le nombre de S mais comment avoir le nombres de lignes ?

  6. #6
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Compte le nombre de sauts de ligne + 1

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2005
    Messages : 119
    Par défaut
    Pour les caractères s, la tu na pas d'autre choix que parcourire tous ton fichier avec fgetc. Mais je conseil tous de même de charger tous le contenut du fichier dans un buffer (et en plus cela te permet de compter le nombre de lignes en mm temps c'est pas beau ça? mdr ), car l'accès mémoire est beaucoup plus rapide que l'accès fichier , donc se sera plus rapide pour la recherche.

    Pour ce qui est de la taille du fichier , si tu est sous win -> api -> GetFileAttributesEx() . Pour l'utilisation , tous est dit sur la msdn.

    heu pourquoi mutiplié par 8. tu a la chance que se soit un fichier texte Car un caractères = 1 octet, si tu compte combien tu en à , ho magique c'est pile la taille de ton fichier. Mais c'est vraiment pas la bonne solution. utilise l'API.

    ++

  8. #8
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Ou de faire une boucle en lisant block par block avec fread
    C'est plus rapide, mais plus complexe

  9. #9
    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 Gruik
    Ou de faire une boucle en lisant block par block avec fread
    C'est plus rapide, mais plus complexe
    Pourquoi c'est plus rapide ? Quand on demande la lecture d'un byte, le système charge un secteur entier en mémoire. Même si ce n'est pas le cas et que la lecture est bufferisée, le C demande un bloc de taille BUFSIZ (ou autre si on a utilisé setbuf() ou setvbuf()) au système, bloc qui est chargé en mémoire. Les autres accès byte se feront dans cette mémoire.

    Ce qui est catastrophique (si le système ne bufferise pas l'accès aux secteurs) c'est d'appeler la fonction système (read(), ReadFile()) pour lire 1 byte.

  10. #10
    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 deck_bsd
    Mais je conseil tous de même de charger tous le contenut du fichier dans un buffer, car l'accès mémoire est beaucoup plus rapide que l'accès fichier , donc se sera plus rapide pour la recherche.
    Un buffer de quel taille ?
    Quel intérêt puisque le problème
    • la taille du fichier
    • le nombres des lignes dans le fichier
    • le nombre que le caractère S se trouve dans le fichier
    peut être résolu en une seule lecture byte par byte ?

Discussions similaires

  1. [Débutant] Question Programmation sous WindowsCE et performances fichiers texte
    Par koluche dans le forum VB.NET
    Réponses: 7
    Dernier message: 30/06/2011, 09h51
  2. Questions : Ecriture dans un fichier texte + utilisation d'un logiciel
    Par Djinner² dans le forum Persistance des données
    Réponses: 3
    Dernier message: 18/06/2008, 14h15
  3. Réponses: 2
    Dernier message: 19/05/2008, 10h34
  4. Question sur lecture d'un fichier text en Java
    Par ovcrash dans le forum Entrée/Sortie
    Réponses: 13
    Dernier message: 27/11/2007, 17h14
  5. Question bête: accés concurent à un fichier texte
    Par djynwk dans le forum Langage
    Réponses: 6
    Dernier message: 26/07/2006, 00h54

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