Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1

    Femme Profil pro amine haroune
    Étudiant
    Inscrit en
    octobre 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Nom : Femme amine haroune
    Localisation : Algérie

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

    Informations forums :
    Inscription : octobre 2011
    Messages : 1
    Points : -1
    Points
    -1

    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 éclairé
    Homme Profil pro Alex V
    Etudiant administrateur systèmes et réseaux
    Inscrit en
    octobre 2007
    Messages
    630
    Détails du profil
    Informations personnelles :
    Nom : Homme Alex V
    Âge : 26
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Etudiant administrateur systèmes et réseaux

    Informations forums :
    Inscription : octobre 2007
    Messages : 630
    Points : 389
    Points
    389

    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 :
    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.

  3. #3
    Expert Confirmé Sénior Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    septembre 2005
    Messages
    24 126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

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

    Informations forums :
    Inscription : septembre 2005
    Messages : 24 126
    Points : 35 191
    Points
    35 191

    Par défaut

    Code C :
    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 émérite
    Avatar de Kirilenko
    Homme Profil pro Lucas Pesenti
    Étudiant
    Inscrit en
    décembre 2011
    Messages
    234
    Détails du profil
    Informations personnelles :
    Nom : Homme Lucas Pesenti
    Âge : 17
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : décembre 2011
    Messages : 234
    Points : 819
    Points
    819

    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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •