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 :

données (fichier--> tableau)


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1
    Points : 0
    Points
    0
    Par défaut données (fichier--> tableau)
    comment j peux copier le contenue d un fichier dans un tableau de string merci

  2. #2
    Membre confirmé
    Homme Profil pro
    amateur
    Inscrit en
    Octobre 2007
    Messages
    731
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 731
    Points : 460
    Points
    460
    Par défaut
    Salut,

    D'abord tu ouvres ton fichier => fopen
    Ensuite tu le parcours => fscanf ou fgets
    en l'enregistrant dans une chaine
    Tu fermes le fichier => fclose

    Typiquement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    void file_close(FILE *p)
    {
        if( fclose(p) != 0 )
        {
            fprintf(stderr,"file_close ; FILE@%d ; CODERR : %s\n", p, strerror(perror));
            p=NULL;
        }
     
        else fclose(p);
    }
     
    FILE *file_open(char *p, const char *r)
    {
        FILE *f = NULL;
        if ( (f=fopen(p,r)) == NULL )
        {
            fprintf(stderr,"file_open(\"%s\",\"%s\") ; CODERR : %s\n", p, r, strerror(perror));
            return NULL;
        }
        return f;
    }
     
    unsigned int file_count_character( char *p )
    {
        char c;
        unsigned int l = 0;
        FILE *f = file_open(p,"r");
     
        while( fscanf(f,"%c",&c) != EOF )
            l++;
     
        file_close(f);
        return l;
    }
     
    char *file_to_string(char *p) // p le chemin du fichier
    {
        char c;
        unsigned int i = 0;
        char *s = allocate_1D_char_ptr( file_count_character(p)*sizeof(char) );
        FILE *f = file_open(p,"r");
        while( fscanf(f,"%c",&c) != EOF )
        {
            s[i] = c;
            i++;
        }
        file_close(f);
        return s;
    }
    Cordialement. Pas de commentaire pour que tu réfléchisses un peu ^^

    EDIT : Au passage, avant que tu te fasses réprimander plus durement, la base quand on demande de l'aide, c'est Bonjour;s'il vous plait;Merci; +orthographe.
    UNE REPONSE UTILE : &|| UN PROBLEME RESOLU :

  3. #3
    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 519
    Points
    41 519
    Par défaut
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    FILE *file_open(char *p, const char *r)
    Euh, pourquoi la première chaîne n'est-elle pas const?
    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 éclairé
    Avatar de Kirilenko
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 234
    Points : 807
    Points
    807
    Par défaut
    Bonjour,

    Le code proposé par darkwall_37 est correct, bien que, à la ligne 10, on a un comportement dangereux (sûrement une faute de frappe, ou quelque chose dans le genre), car tu essaies de fermer une seconde fois le fichier. En outre, la ligne 7 (affectation de NULL à p) est au passage inutile car on agit sur une variable locale. Du point de vue de la stratégie globale, je ne suis pas fanatique des lectures de fichier à plusieurs reprises (d'autant plus que, dans le code proposé, le fichier est ouvert puis parcouru deux fois, ce qui n'est pas un algorithme très efficace).

    D'ailleurs, tout dépend de ce qu'on cherche à en faire ensuite, mais une bonne idée serait d'utiliser une liste chaînée pour lire le fichier en entier, ligne par ligne (un peu comme l'éditeur de texte ed). L'avantage est qu'on a une structure de donnée flexible, qui ne nécessite qu'une taille plafond pour une ligne si on veut faire un peu de statique (il existe notamment une macroconstante POSIX pour faire cela, c'est donc assez simple). L'inconvénient est que l'accès aléatoire est catastrophique, mais, en pratique, c'est finalement plutôt rare d'en avoir besoin sur un fichier (ou alors, on a déjà des tailles plafonds car ce sont des formats de fichier bien définis). En fait, je crois qu'on manque d'informations sur le problème.

    Bonne journée.
    Récursivité en C : épidémie ou hérésie ?

    "Pour être un saint dans l'Église de l'Emacs, il faut vivre une vie pure. Il faut se passer de tout logiciel propriétaire. Heureusement, être célibataire n'est pas obligé. C'est donc bien mieux que les autres églises" - Richard Stallman

Discussions similaires

  1. extraire données d'un tableau dans un fichier texte
    Par cre31400 dans le forum MATLAB
    Réponses: 4
    Dernier message: 29/07/2009, 15h51
  2. Lire un fichier binaire et ranger les données dans un tableau
    Par Flaherty Mc Coillean dans le forum Débuter
    Réponses: 1
    Dernier message: 31/05/2009, 17h45
  3. [RegEx] Mise à jour d'un fichier à partir des données d'un tableau
    Par saramery dans le forum Langage
    Réponses: 21
    Dernier message: 03/11/2008, 23h58
  4. Réponses: 2
    Dernier message: 15/09/2008, 23h12
  5. [VBA-E] Tableau de données <=> Fichier Texte
    Par P50 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/12/2005, 16h02

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