01net    Web


Actuellement en ligne : 314 Utilisateurs dont 17 dans Programmation et développement >S'inscrire      >S'identifier      >Recherche      >Aide  
modéré par A.Ouloube, Beno@  
01net > Forum de 01net > Programmation et développement > C/C++
> Mettre le contenenue d'un fichier dans un tableau
Passionné(e) d'internet, de logiciels, de forums ? 01net recrute...
Auteur
Message
 
<     1       >
nosdo
  
   
      ?   @     Posté le 23/05/2005 17:51:46  
Voter pour ce message
Bonjour
Apres avoir parcouru plusieur tuto j'ai un probleme en C.
Donc je demande un peu d'aide.
Je voudrais copier le contenue d'un fichier fichier.dat dans un tableau.
Je voulais utiliser fread mais je n'y arrives pas.
Le fichier contient des entier long('double') et chauq e nouveau entier apparait dans la ligne du dessus.
Exemple:

1.20254
23.21445
24.222


Mon tableau est declarer en double: double tab[N] .
Et je voudrais que chaque case du tableau prenne une valeur:

tab[0]=1.20254
tab[1]=23.21445
tab[2]=24.222


Si vous pouvez m'aider s'a m'arrangerai car ça fait plsu de 4 heure que je suis desus.
Gautier
  2008, ...
  :-)
      ?   @     Posté le 23/05/2005 20:27:15  
Voter pour ce message
je te conseille plutot fgets() que fread()
Pour lire ligne par ligne, c'est plus pratique
http://www.cppreference.com/stdio/fgets.html

et ensuite atol() pour convertir en long
http://www.cppreference.com/stdstring/atol.html
-------
[Chaque minute qui passe est une occasion de changer le cours de sa vie]
[Les préjugés sont les ennemis du bon sens]
Euremb
  
   
      ?   @     Posté le 24/05/2005 10:21:48  
Voter pour ce message
Je pense que fscanf est bien plus pratique :

int fscanf (FILE * stream, const char * format, ...);


tu fais des fscanf(fp, "%f", & (T [ i ])) dans une boucle for et c'est bon :)

-->Message édité par Euremb le 24/05/2005 10:22:54<--
Euremb
  
   
      ?   @     Posté le 24/05/2005 10:25:27  
Voter pour ce message
si tu veux vraiment faire des fread :

size_t fread (void *ptr, size_t size, size_t nmemb, FILE *stream);


dans le tableau que tu récupères (void *ptr), tu fais des sscanf(ptr, "%f", &( T [ i ])) dans une boucle for :)


ceci est du au fait que tes données sont formatées, tu ne peux donc pas faire dans une boucle fread(&(T [ i ]), sizeof(double), (size_t)1, fp) ; cette méthode ne fonctionnerait que si tu avais des données binaires.

-->Message édité par Euremb le 24/05/2005 10:29:41<--
koala01
  
   
      ?   @     Posté le 30/05/2005 12:49:41  
Voter pour ce message
A vrai dire, tout dépend de la manière dont le fichier est créé (et ouvert)...

N'oublions pas qu'un fichier peut etre créé en "acces séquentiel" (les valeurs numériques seront alors considérées comme des "caractères", avec le code ASCII correspondant) ou en "acces direct" (binaire), avec des longueurs de 8bits pour les caractères, 32 (ou 16 pour les vieux compilo) bits pour les entier, etc...

La bonne méthode de lecture dépendra bien évidemment de la méthode d'ouverture du fichier...

Evidemment, la méthode d'ouverture du fichier en lecture dépendra, elle, de la méthode d'ouverture du fichier à la création...

Si le fichier a été créé en tant que fichier à acces séquentiel, il s'agira de travailler avec des "chaines de caractères", autrement dit, de prévoire une chaine de caractères temporaire, pour la lecture, et de la transformer par la suite dans le type que tu veux avec les fonction atoi, atof, atol etc...

Si le fichier a été créé en tant que fichier à acces direct, tu pourra directement demander la lecture de tes entiers, réels et autres, en indiquant l'indice du tableau à utiliser pour la valeur...
<     1       >

01net > Forum de 01net > Programmation et développement > C/C++
> Mettre le contenenue d'un fichier dans un tableau

Aller à :

Page générée en : 0.112s - X2board 2.2

Nous contacter | Charte de confiance | Voir notice légale

Tous droits réservés © 1999 - 2008 Groupe Tests - 01net.


Sites du réseau 01net Network : 01net - 01men - Rmc.fr - Bfmtv.fr - Radiobfm.com - TousLesPodcasts - Micro Achat

Édition PDF
Créez, convertissez, personnalisez et visualisez vos documents PDF!

Jeux
Nouveauté : Transformez une bijouterie décrépite en une petite merveille de l’industrie du luxe !