Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1462 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C] Lire un fichier texte

 


 Mot :   Pseudo :  
 
 Page :   1  2  3
Page Précédente
Auteur Sujet :

[C] Lire un fichier texte

n°372672
tabasc0
Posté le 26-04-2003 à 18:06:58  profilanswer
 

Comment fait on pour lire un fichier texte et enregister ses donnés dans un tableau ?
Je sais lire les caracteres 1 par 1 ms je ne sais pas trop comment passer a la ligne.
Par exemple pour lire un tableau , j aimerais passer a la deuxieme ligne du tableau...
Si k1k1 pouvait m aider svp, je suis débutant..

mood
Publicité
Posté le 26-04-2003 à 18:06:58  profilanswer
 

n°372674
Taz
bisounours-codeur
Posté le 26-04-2003 à 18:08:30  profilanswer
 

:heink:

n°372680
ToxicAveng​er
Posté le 26-04-2003 à 18:16:30  profilanswer
 

tu preferes pas stocker ca dans des char* ?

n°372938
tabasc0
Posté le 27-04-2003 à 00:24:16  profilanswer
 

je connais pas vraiment les char*...
 
mon fichier texte ressemble a ca :  
Départ  Arrivée  
X Y X Y
0 7 0 8
1 9,26 1 9
3 10 4 10
3 9 5,67 9
3,21 7 6 7
0,36 6 5 5,02
3 3 1 3
3 2 0 2
3 0 0 0
3 0 6 0
 
Et il faut que mon programme puisse lire les coordonnées x et y.
Voila.

n°372987
red factio​n
Posté le 27-04-2003 à 01:23:19  profilanswer
 


tu fait
 

Code :
  1. int x1,y,x2,z;
  2. fscanf(file,"%d %d %d %d",&x1,&y,&x2,&z);


 
bon fo encore que tu sache comment ouvrir un fichier  :D

n°373037
Angel_Doog​las
Le dernier des humains
Posté le 27-04-2003 à 03:30:18  profilanswer
 

Surtout qu'il y a des valeurs du style 0,36  dans le tableau en question :o
 
remplace deja par double pour la declaration (sans oublier de les transformer en tableau de double en fait)
Pour lire le fichier => RTFM ou STFW  
Et pis pareil pour le fscanf.

n°373078
TiTan91
Posté le 27-04-2003 à 10:35:57  profilanswer
 

red faction>
il me semble que ca n arrive pas a passer le texte du debut du fichier :heink:  
 

Citation :


Départ  Arrivée  
X Y X Y

n°373088
ToxicAveng​er
Posté le 27-04-2003 à 11:04:22  profilanswer
 

red faction a écrit :


tu fait
 

Code :
  1. double x1,y,x2,z;
  2. fscanf(file,"%s %s\n);
  3. while(...)
  4. {
  5.     fscanf(file,"%g %g %g %g\n",&x1,&y,&x2,&z);
  6.     ...
  7. }


 
bon fo encore que tu sache comment ouvrir un fichier  :D  

n°373097
Tom18
Posté le 27-04-2003 à 11:21:06  profilanswer
 

a quoi sert le premier fscanf ?  :??:

n°373101
TiTan91
Posté le 27-04-2003 à 11:32:40  profilanswer
 

eventuellement a passer les lignes de texte ???
 
mais il manque des arguments non ?
et c koi %s g jamais vu :??:

mood
Publicité
Posté le 27-04-2003 à 11:32:40  profilanswer
 

n°373120
ToxicAveng​er
Posté le 27-04-2003 à 12:10:09  profilanswer
 

titan91 a écrit :

eventuellement a passer les lignes de texte ???
 
mais il manque des arguments non ?
et c koi %s g jamais vu :??:  


 
c pas standard, mais bon j'avais la flemme de faire du code propre [:zaib3k]  
 
le 1er sert a passer la 1ere ligne de texte.

n°373122
Tom18
Posté le 27-04-2003 à 12:13:24  profilanswer
 

%s = string
 
c'est pour prendre un chaine de caractere, en fait le %s prend  
du debut jusqu'au prochain espace je crois... :hello:

n°373124
Taz
bisounours-codeur
Posté le 27-04-2003 à 12:13:59  profilanswer
 

et t'as pas plus compliqué comme truc?
spourtant pas compliqué. soit on fait un fgets, soit des getchar jusqu'à un '\n', etc. Pas besoin de scanf

n°373161
tabasc0
Posté le 27-04-2003 à 13:12:23  profilanswer
 

Moi je pense pluto faire ca avec un fscanf().
Ms je comprend pas trop comment passer a la ligne...
c ca : "\n" qui me permet de passer a la ligne ??
Pke ca a pas l air de marcher :/

n°373195
Tom18
Posté le 27-04-2003 à 13:55:23  profilanswer
 

oui \n permet de changer de ligne... :hello:
 
fais un watch pour voir si il scanne bien les 4 valeurs de ta ligne déjà... :wahoo:


Message édité par Tom18 le 27-04-2003 à 13:56:21
n°373237
tabasc0
Posté le 27-04-2003 à 14:26:39  profilanswer
 

attendez euh..
"un watch" c quoi ca  :??:

n°373241
TiTan91
Posté le 27-04-2003 à 14:29:53  profilanswer
 

pour les vleurs c bon ca les scan bien
mais fo passer les ligens de texte c le seul pb...

n°373246
tabasc0
Posté le 27-04-2003 à 14:38:09  profilanswer
 

Merci a tous  :jap:

n°373250
Ace17
Posté le 27-04-2003 à 14:41:23  profilanswer
 

ToxicAvenger a écrit :

tu preferes pas stocker ca dans des char* ?


 :heink:  
Quelle différence avec un tableau

n°373264
tabasc0
Posté le 27-04-2003 à 15:00:18  profilanswer
 

Tom18 a écrit :

%s = string
 
c'est pour prendre un chaine de caractere, en fait le %s prend  
du debut jusqu'au prochain espace je crois... :hello:  


 
Moi g l impression qu il a du mal avec les %s pke qd j execute le truc il me fait une erreur et ma fenetre dos bhe pof elle disaprait..

n°373270
ToxicAveng​er
Posté le 27-04-2003 à 15:12:58  profilanswer
 

Ace17 a écrit :


 :heink:  
Quelle différence avec un tableau


 
autant qu'entre le jour et la nuit.  :pfff:

n°373272
Ace17
Posté le 27-04-2003 à 15:17:46  profilanswer
 

Vas y, explique moi la différence qu'il y a entre un char* et un tableau. ( je pense qu'on a mal du se comprendre )
Il me semble qu'un char* n'est autre qu'un pointeur vers un char (ou un tableau de char dans ce cas précis)


Message édité par Ace17 le 27-04-2003 à 15:21:04
n°373287
ToxicAveng​er
Posté le 27-04-2003 à 15:35:10  profilanswer
 

Ace17 a écrit :

Vas y, explique moi la différence qu'il y a entre un char* et un tableau. ( je pense qu'on a mal du se comprendre )
Il me semble qu'un char* n'est autre qu'un pointeur vers un char (ou un tableau de char dans ce cas précis)


 
ton tableau a une taille fixe (a part en C99 je crois).
un char* est virtuellement infinie (a coup de malloc/realloc).

n°373316
Ace17
Posté le 27-04-2003 à 16:25:05  profilanswer
 

ToxicAvenger a écrit :


ton tableau a une taille fixe (a part en C99 je crois).
un char* est virtuellement infinie (a coup de malloc/realloc).


 
Oui mais tu peux tout à fait adresser un tableau à taille fixe avec un char*... en fait tu compares deux trucs pas comparables. Un tableau est une zone de mémoire; un char* c'est juste un type de données, qui sert très souvent à adresser un tableau.


Message édité par Ace17 le 27-04-2003 à 16:25:23
n°373317
ToxicAveng​er
Posté le 27-04-2003 à 16:30:18  profilanswer
 

Ace17 a écrit :


 
Oui mais tu peux tout à fait adresser un tableau à taille fixe avec un char*... en fait tu compares deux trucs pas comparables. Un tableau est une zone de mémoire; un char* c'est juste un type de données, qui sert très souvent à adresser un tableau.


 
le char* pointe sur le 1er octet d'une zone mémoire.
 
Et perso, je prefere utiliser des char*, c'est plus souple.

n°373325
Konar
Posté le 27-04-2003 à 16:50:05  profilanswer
 

ToxicAvenger a écrit :


 
le char* pointe sur le 1er octet d'une zone mémoire.
 
Et perso, je prefere utiliser des char*, c'est plus souple.


 
et perso, moi je met des int partout, par exemple :

Code :
  1. int str[2];
  2. strcpy((char*)&str, "riendtc" );


 
et j'attends vivement le 64 bits.


Message édité par Konar le 27-04-2003 à 16:50:26
n°373331
Tom18
Posté le 27-04-2003 à 17:06:00  profilanswer
 

tabasc0 a écrit :


 
Moi g l impression qu il a du mal avec les %s pke qd j execute le truc il me fait une erreur et ma fenetre dos bhe pof elle disaprait..


 
le %s tu le stockais dans quoi ? un char* ?  :hello:
 
[edit] fautes d'orthographes... :whistle:


Message édité par Tom18 le 27-04-2003 à 17:06:33
n°373478
ToxicAveng​er
Posté le 27-04-2003 à 20:37:53  profilanswer
 

Konar a écrit :


 
et perso, moi je met des int partout, par exemple :

Code :
  1. int str[2];
  2. strcpy((char*)&str, "riendtc" );


 
et j'attends vivement le 64 bits.


 
de toutes facons, en C, un char est un int.

n°373485
charly007
Posté le 27-04-2003 à 20:40:33  profilanswer
 

ToxicAvenger a écrit :


 
de toutes facons, en C, un char est un int.


 :heink:


Message édité par charly007 le 27-04-2003 à 20:42:17
n°373503
ToxicAveng​er
Posté le 27-04-2003 à 20:49:05  profilanswer
 


 
ben vi... si tu sais pas ca, tu ne sais rien du C alors... :lol:


Message édité par ToxicAvenger le 27-04-2003 à 21:35:53
n°373504
Taz
bisounours-codeur
Posté le 27-04-2003 à 20:49:06  profilanswer
 

oui, c'est le plus petit int
 
la norme veut  
 
sizeof(char)<=sizeof(short int)<=sizeof(int)<=sizeof(long int)<=sizeof(long long int)

n°373505
ToxicAveng​er
Posté le 27-04-2003 à 20:50:18  profilanswer
 

++Taz a écrit :

oui, c'est le plus petit int
 
la norme veut  
 
sizeof(char)<=sizeof(short int)<=sizeof(int)<=sizeof(long int)<=sizeof(long long int)


 
la norme veut également que sizeof(char) == 1

n°373506
charly007
Posté le 27-04-2003 à 20:52:34  profilanswer
 

ToxicAvenger a écrit :


 
ben vi... si tu sait pas ca, tu ne sait rien du C alors... :lol:  


Ca ne me surprendrait pas.  :D  
 
Enfin moi je pensais que char était sur 8 bits, et int sur 16 ou 32 (dépendant des platformes), mais bon...


Message édité par charly007 le 27-04-2003 à 20:53:38
n°373517
Taz
bisounours-codeur
Posté le 27-04-2003 à 21:06:07  profilanswer
 

et un char compte exactement CHAR_BIT bits
 
voir votre <limits.h> pour plus de precisions

n°378835
tabasc0
Posté le 30-04-2003 à 19:41:36  profilanswer
 

j ai un probleme avec le %s.
On m a dit qu il etait censé prendre toute une chaine de caractere mais qd je l utilise il ne prend qu un seul caractere seulement.

Code :
  1. fscanf(pf,"%c %c %c\n",&temp,&temp1,&temp2);
  2.  printf("%c %c %c",temp,temp1,temp2);


 
ca c mon code
et ca c mon texte que je fscanf :  
Depart  Arrivee  
X1 Y2 X1 Y2
0 7 0 8
1 9,26 1 9
3 10 4 10
3 9 5,67 9
3,21 7 6 7
0,36 6 5 5,02
3 3 1 3
3 2 0 2
3 0 0 0
3 0 6 0
 
 
et ds ma console il m ecrit : D e p
moi je voudrais plutot qu il m ecrive depart arrivee X1

n°379192
Angel_Doog​las
Le dernier des humains
Posté le 01-05-2003 à 02:26:51  profilanswer
 

Tu as effectivement un probleme: celui d'ecrire %c a la place de %s
 
%c ne va te prendre qu'un seul et unique caractere, meme s'il s'agit d'une chaine.

n°379195
tabasc0
Posté le 01-05-2003 à 03:12:06  profilanswer
 

merde excuse moi je me suis trompé c bien des %s que g marqué.
Donc c pas ca le probleme.
Sur ce coup la g un pou fait le boulet  :pt1cable:

n°379199
Angel_Doog​las
Le dernier des humains
Posté le 01-05-2003 à 04:43:50  profilanswer
 

Essayes avec fscanf ("%s%s\n%s%s%s%s\n", ...)
 
Je trouve ce code laid mais bon, puisqu'on est dans cette veine.
 
fscanf, c'est tres pratique pour recuperer des donnees bien formatees, comme les nombres que tu as ensuite.
Mais ce serait moi je virerais direct les 2 premieres lignes (comme on te l'as deja dit avec l'aide d'un fgets par exemple) et apres j'utiliserais le fscanf.


Message édité par Angel_Dooglas le 01-05-2003 à 04:44:13
n°379200
Konar
Posté le 01-05-2003 à 04:44:35  profilanswer
 

tabasc0 a écrit :

merde excuse moi je me suis trompé c bien des %s que g marqué.
Donc c pas ca le probleme.
Sur ce coup la g un pou fait le boulet  :pt1cable:  


 
poste tout ton code, y aura surement plein de trucs a revoir...

n°379203
Konar
Posté le 01-05-2003 à 05:16:47  profilanswer
 

bravo pour ton fichier texte a la con, j'ai bien perdu 30 min a m'apercevoir que c'etait la faute aux caracteres ',' alors que pour le scanf pour lire des float c'est mieux d'avoir le caractere '.' entre les décimaux (personne s'en est rendu compte aussi...)
 

Code :
  1. #include <stdio.h>
  2. int main()
  3. {
  4. char str[32];
  5. float x1, y1, x2, y2;
  6. FILE *f;
  7. f = fopen("c:\\rien.txt", "r" );
  8. if (!f)
  9.  return 1;
  10. fscanf(f, "%s%s\n%s%s%s%s\n", str, str, str, str, str, str);
  11. while (fscanf(f, "%f %f %f %f\n", &x1, &y1, &x2, &y2) != -1)
  12.  ;//printf("\nOut : %f %f %f %f", x1, y1, x2, y2);
  13. fclose(f);
  14. return 1;
  15. }


 
voila, je peux aller me pieuter content d'avoir fait du c-unix.

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C] Lire un fichier texte

 

Sujets relatifs
Mauvais affichage du fichierLecture dans un fichier : ligne par ligne
lire un caractere de commande en Cfaire disparaitre les case en haut a droite d'un fichier Excel
Comment vérifier si un fichier excel est déja ouvert ou non (VBA)??Texte ecrit verticalement ??
Lire sur le contenu d'une socket pop3Ca s'ouvre avec quoi un fichier lib ?
Ouvrir un fichier en lecteur seuleRenomer des fichier en BAT
Plus de sujets relatifs à : [C] Lire un fichier texte


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR