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 :

Afficher contenu d'un fichier


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 83
    Par défaut Afficher contenu d'un fichier
    Bonsoir à tous,

    afin d'afficher le contenu d'un fichier je procéde comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ((fichier = fopen(nomFichier, "r")) == NULL) { perror("Erreur lors du fopen"); exit(1); }
    int caractere;
    while ((caractere = fgetc(fichier)) != EOF) putc(caractere, stdout);
    fclose(fichier);
    soit caractère par caractère...

    Ne serait-il pas possible d'extraire tout le contenu de mon fichier dans une chaîne de caractères ?

    Merci d'avoir pris le temps de lire mon post !

  2. #2
    Membre Expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Par défaut
    Il y a fread qui pourrait t'intéresser... avec de la bufferisation...
    Mais tout extraire en un coup... je ne sais pas si ça existe.

    La méthode pourrait être :
    fseek à la fin du fichier (0 avec SEEK_END), ftell, fseek (0 avec SEEK_SET), fread de la valeur de ftell dans un buffer mallocé à cette même taille +1.

    Mais pourquoi veux-tu extraire tout d'un coup ?
    getline ne t'aiderait pas ?
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    C'est possible, mais difficile car il n'est pas évident de connaître la taille totale du fichier en avance. Une façon garantie est d'ouvrir le fichier en mode binaire, puis utiliser fseek() et ftell().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Un truc du genre:
    fichier = fopen(..., "rb");
    fseek(fichier, 0, SEEK_END);
    taille = ftell(fichier);
    Note que cela n'est pas du tout garanti marcher quand le fichier est ouvert en mode texte.
    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.

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 83
    Par défaut
    Mais pourquoi veux-tu extraire tout d'un coup ?
    A vrai dire je m'exerce simplement... ^^

    Une fois de plus je vous remercie pour votre aide ! (Deuxième fois ce soir. )
    Pour le moment je n'ai pas encore vraiment étudié la manipulation des fichiers en mode binaire... Je vais m'y atteler!

    Encore merci pour toutes ces précisions! Vous m'avez grandement aidé!

  5. #5
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    Bonsoir,

    il y a aussi l'option mmap ... si tu travailles avec un os POSIX, il y a une équivalent windows aussi.

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

Discussions similaires

  1. [Batch] Afficher contenu d'un fichier texte une ligne après l'autre
    Par guiguir68 dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 22/08/2014, 13h43
  2. Afficher contenu d'un fichier dans une zone de texte
    Par Dimitri_87 dans le forum GTK+ avec C & C++
    Réponses: 8
    Dernier message: 23/09/2006, 14h09
  3. Afficher le contenu d'un fichier
    Par ginnielle dans le forum Assembleur
    Réponses: 12
    Dernier message: 10/12/2004, 10h46
  4. Afficher le contenu d'un fichier xls dans un DBgrid
    Par bianconeri dans le forum C++Builder
    Réponses: 5
    Dernier message: 03/09/2004, 16h35
  5. Réponses: 1
    Dernier message: 12/02/2003, 09h36

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