Précédent   Forum du club des développeurs et IT Pro > C et C++ > C > Débuter
Débuter Forum d'entraide pour débuter en langage C. Avant de poster -> FAQ C
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 18/12/2012, 18h19   #1
darkvoid
 
Femme amine haroune
Étudiant
Inscription : 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
darkvoid est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 18/12/2012, 19h13   #2
darkwall_37
Membre éclairé
 
Homme Alex V
Etudiant administrateur systèmes et réseaux
Inscription : octobre 2007
Messages : 609
Détails du profil
Informations personnelles :
Nom : Homme Alex V
Âge : 24
Localisation : France, Yvelines (Île de France)

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

Informations forums :
Inscription : octobre 2007
Messages : 609
Points : 378
Points : 378
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.
darkwall_37 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/12/2012, 11h50   #3
Médinoc
Expert Confirmé Sénior
 
Avatar de Médinoc
 
Homme
Développeur informatique
Inscription : septembre 2005
Messages : 22 396
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

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

Informations forums :
Inscription : septembre 2005
Messages : 22 396
Points : 32 049
Points : 32 049
Envoyer un message via MSN à Médinoc
Citation:
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.
Médinoc est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2012, 12h16   #4
Kirilenko
Membre émérite
 
Avatar de Kirilenko
 
Homme Lucas Pesenti
Étudiant
Inscription : décembre 2011
Messages : 234
Détails du profil
Informations personnelles :
Nom : Homme Lucas Pesenti
Âge : 16
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 : 858
Points : 858
Envoyer un message via MSN à Kirilenko
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
Kirilenko est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 20h01.


 
 
 
 
Partenaires

Hébergement Web