
|
|
Auteur
|
Message
|
1
|
|
|
|
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.
|
|
2008, ...
|
|
|
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]
|
|
|
|
|
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<--
|
|
|
|
|
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<--
|
|
|
|
|
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
|
|

|


|