Lire un fichier .txt en C?

rundish Messages postés 14 Date d'inscription vendredi 21 mai 2004 Statut Membre Dernière intervention 21 mai 2004 - 21 mai 2004 à 10:09
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013 - 21 mai 2004 à 19:45
Bonjour à tous.
Voila j'explique mon problème. (je suis plus qu'un newbie en C).
J'ai un fichier txt contenant une série de nombre (des réels) séparés par une tabulation et ce sur plusieurs lignes. j'aimerai lire ce fichier pour mettre chacun de ces nombres dans un tableau.
Ceci en utilisant le C.
Comment on fait, SVP? Je n'arrive pas à trouver sur le net un truc simple.
Merci d'avance

30 réponses

c2millet Messages postés 198 Date d'inscription lundi 2 juin 2003 Statut Membre Dernière intervention 15 février 2005
21 mai 2004 à 10:25
ouvrir, fermé un fic txt en c: fopen
lire des données c: fread,fgets

Avec ces fonctions tu devrais y arriver ;-)
Cmill
0
c2millet Messages postés 198 Date d'inscription lundi 2 juin 2003 Statut Membre Dernière intervention 15 février 2005
21 mai 2004 à 10:26
pour fermer "fclose" g oublié de le mettre
Cmill
0
rundish Messages postés 14 Date d'inscription vendredi 21 mai 2004 Statut Membre Dernière intervention 21 mai 2004
21 mai 2004 à 10:48
ok Cmill.
En fait, j'ai du mal à saisir le fonctionnement de l'instruction fread et fgets. Il n'y a pas un trucs aussi simple comme lorsque qu'on écrit un fichier?
du genre fread(nom_fichier,"%f/n", tableau[i],[j]);
merci
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
21 mai 2004 à 10:59
si fprintf et fscanf

pour lire/ecrire un char*, fgets/fputs

pour lire/ecrire un buffer, fread/fwrite
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rundish Messages postés 14 Date d'inscription vendredi 21 mai 2004 Statut Membre Dernière intervention 21 mai 2004
21 mai 2004 à 11:14
tu as un exemple djl?
j'ai du mal à saisir.
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
21 mai 2004 à 11:19
le nombre de reel par ligne est fixe?

montre le contenu du fichier
0
rundish Messages postés 14 Date d'inscription vendredi 21 mai 2004 Statut Membre Dernière intervention 21 mai 2004
21 mai 2004 à 11:30
oui, il y a 81 réel écrit de cette façon:
1.642435388 1.642435388 1.642435388
c'est juste les 3 premiers nombres. En passant, juste 2 décimales me suffise.
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
21 mai 2004 à 11:45
pour lire les 3 premiers

#include <stdio.h>

int  main()
{
    float f1,f2,f3;
    FILE *file;
    
    file=fopen("toto.txt","r");
    fscanf(file,"%f%f%f",&f1,&f2,&f3);
    fclose(file);
    
    printf("%f %f %f\n",f1,f2,f3);
    
    fflush(stdout);
    getchar();
    return 0;
}
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
21 mai 2004 à 11:50
printf("%.2f %.2f %.2f\n",f1,f2,f3); pour afficher que 2 decimales
0
rundish Messages postés 14 Date d'inscription vendredi 21 mai 2004 Statut Membre Dernière intervention 21 mai 2004
21 mai 2004 à 11:52
oki merci djl, je vais essayer d'étendre cela au fichier entier.
a plus
encore merci
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
21 mai 2004 à 12:46
J'ai récemment déposer une source qui fait ca sur le site ...
Elle a l'avantage de ne pas tenir compte du nombre de ligne et du nombre d'element par ligne de ton fichier....
Ton fichier peu ainsi changer de structure facillement...

Voici l'URL :
http://www.cppfrance.com/code.aspx?ID=22795

Tu va cependant devoir adapter le programme ... Car moi je l'ai fait pour un tableau d'entier et un espace comme separateur entre chaque valeur.
Tu auras donc a mettre le type float a ton tableau et "\t" comme séparateur... Le code reste intacte après...

J'espere que cela pourra t'aider...

A++ et bonne continuation....

Samir
0
rundish Messages postés 14 Date d'inscription vendredi 21 mai 2004 Statut Membre Dernière intervention 21 mai 2004
21 mai 2004 à 13:24
Bonjour Samir.
j'avais déjà essayer avec ta source, mais j'ai un message d'erreur dés le début de l'execution. j'ai une erreur "stack overflow" sur : int main(int argc, char* argv[]).
voila. c'est pour ca que j'essayais autre chose.
0
rundish Messages postés 14 Date d'inscription vendredi 21 mai 2004 Statut Membre Dernière intervention 21 mai 2004
21 mai 2004 à 13:28
j'oubliais je code en C et pas en C++
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
21 mai 2004 à 13:34
l'exemple de DeAtHCrAsH est en C99, et il est tout à fait possible que ton compilo ne supporte pas le C99, mais rassure toi ce n'est pas du c++

ya truc qui ne fonctionne pas?
0
rundish Messages postés 14 Date d'inscription vendredi 21 mai 2004 Statut Membre Dernière intervention 21 mai 2004
21 mai 2004 à 13:45
oki djl. je ne sais pas ce qu'il fonctionne pas, mais lorsque que j'exécute, j'ai une erreur : "stack overflow"
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
21 mai 2004 à 13:52
le meme code? sans avoir rien changer ?
0
rundish Messages postés 14 Date d'inscription vendredi 21 mai 2004 Statut Membre Dernière intervention 21 mai 2004
21 mai 2004 à 13:59
c'est le compilateur qui merdais pour l'erreur. je vais essayer avec mes modifs et mon fichier
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
21 mai 2004 à 14:05
Tu a quel compilateurs ?
Je me suis servi de VC++ 6 pour faire ce code...
Si je ne me trompe pas le sompilateurs est en freeware ....
A verifier...

Samir
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
21 mai 2004 à 14:09
non c'est pas un freeware (c'est meme cher)

devcpp est un freeware
0
c2millet Messages postés 198 Date d'inscription lundi 2 juin 2003 Statut Membre Dernière intervention 15 février 2005
21 mai 2004 à 14:12
jamais vu de produit microsoft gratos ;-)
Cmill
0
Rejoignez-nous