probleme de newbie vis a vis de la lecture d un fichier txt....

probleme de newbie vis a vis de la lecture d un fichier txt.... - C - Programmation

Marsh Posté le 13-07-2004 à 00:24:05    

Bonjour,
je n ai pas trouver comment faire une recherche sur le forum, et puis je ne sais meme pas trop bien comment expliquer sans exemple mon probleme donc la recherche serait sans doute peu fructueuse...
Donc, je dois lire un fichier texte (.xls par ailleurs, mais je ne pense pas que cela ait une consequence), fait par un autre programme (tres long a executer donc pas reexecutable).
le fichier se presente ainsi
 
0"tabulation"4.65
1"tabulation"5.23
2"tabulation"6.1
3"tabulation"6.5
...
 
il fait un millier de lignes grosso modo (peut etre plus), et j aimerai bien mettre tout ca dans un vecteur (array je crois) si on nomme V le vecteur
V[0]=4.65
V[1]=5.23
V[2]=6.1
V[3]=6.5
...
 
je sais qu il s agit d un probleme tres facil, le probleme c est que j ai tres peur de patiner longtemps avec les  problemes de scanf et de conversion de chaine en flotant et des choses comme ca
donc je suis sur que certain d entre vous on deja fait quelque chose d equivalent, donc si quelqu un peut me faire un bete  Ctrl+C, Ctrl+V
ou alors mieux si quelqu un pense pouvoir m expliquer ca rapidement et simplement...
d avance je vous remercie
 
romain

Reply

Marsh Posté le 13-07-2004 à 00:24:05   

Reply

Marsh Posté le 13-07-2004 à 00:34:13    

bon, ca vas pas etre clean, mais c'est un debut surement
 

Code :
  1. FILE *fichier = fopen("fich.txt","r+" );
  2. int tab[NBLIGNES];
  3. fread(tab,sizeof(int),NBLIGNES,fichier);


 
 
mais je vient de penser que ton fichier est en TXT, va falloir convertir tout ca [:joce]
 
 
edit : le NBLIGNES je sais pas du tout si c'est bien meme si c'est 'enorme', dans le fread [:spamafote]
 
edit 2 : y a pas mal de truc sur google / MSDN aussi ;)


Message édité par didier1809 le 13-07-2004 à 00:42:07

---------------
.
Reply

Marsh Posté le 13-07-2004 à 00:42:06    

merci beaucoup, je vais essayer ca, j espere que ca va  marcher, et je vous dit ca quand j ai fini...
(note que je je suis au canada donc je finirais sans doute demain matin car tout le monde apr du bureau la...)
 
romain

Reply

Marsh Posté le 13-07-2004 à 00:43:34    

perettiromain a écrit :

merci beaucoup, je vais essayer ca, j espere que ca va  marcher, et je vous dit ca quand j ai fini...
(note que je je suis au canada donc je finirais sans doute demain matin car tout le monde apr du bureau la...)
 
romain


 
l'essaie pas comme ca, la c'est pour lire un fichier avec des entiers [:ddr555]
 
y a surement qqn de plus calé que moi (c'est pas dur :D) qui sera plus a meme de t'aider
 


---------------
.
Reply

Marsh Posté le 13-07-2004 à 08:13:24    

manqué. il a un fichier texte, tu lui file une solution pour données binaires.
 
while(fgets())
{
  if(sscanf() != 2) break;
}

Reply

Marsh Posté le 13-07-2004 à 10:54:00    

Taz a écrit :

manqué. il a un fichier texte, tu lui file une solution pour données binaires.
 
while(fgets())
{
  if(sscanf() != 2) break;
}


 
je sais qu'il a un txt, je l'ai noté plus haut, mais il me semblait qu'avec fread on pouvait lire du texte  :??:  
 
et en cherchant un minimum, c'est tou a fait possible amha.
 
par contre j'ai pas suivi ce que tu fait avec ton code la ?


---------------
.
Reply

Marsh Posté le 13-07-2004 à 11:13:22    

traduction (enfin j'espere pas dire de connerie(s))
 
tant que tu peux changer de ligne {
   si la lecture est differente de 2  
   arret du traitement (de la boucle)
}
 
*******
 
fgets(pointeur ou est stocke la chaine,nb caracteres max a lire,pointeur du fichier que tu lis)
 
exemple: fgets(contient,sizeof(contient),fichier);
 
sscanf(buffer ou les données sont lus,format a utiliser pour la lecture);
 
A+

Reply

Marsh Posté le 13-07-2004 à 17:11:06    

ou la.. merci beaucoup, et beh c est plein de commande que je ne connaissais pas, merci a tous pour ca je tente de suite
 
romain

Reply

Marsh Posté le 14-07-2004 à 00:56:38    

alors merci beacoup, par ce que ca marche parfaitement, me reste donc lsu qu a faire le truc facil maintenant
j ai mis du temps mais je suis nul et j ai fait autre chose dans ma journee c est pour ca
merci encore

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed