Lire un tableau de valeurs dans un fichier contenant aussi du texte

Lire un tableau de valeurs dans un fichier contenant aussi du texte - C - Programmation

Marsh Posté le 17-11-2007 à 12:10:04    

Salut,
 
Je débute en programmation, aussi j'aurais besoins d'un petit coup de pouce. Voilà ce que j'aimerais faire : j'ai dans un fichier un tableau de valeurs qui se présente par exemple de la sorte :
 
/*texte*/
2.4 3.40 4
3 23.9 32.4
12 32 9.07
etc...
/*texte*/
 
Ce que j'aimerais c'est récupérer uniquement les nombres pour ensuite les stocker dans des variables. Je pense qu'il faut utiliser la fonction fgets qui permet de lire le fichier ligne par ligne mais je n'arrive pas concrètement à le faire. Auriez-vous une idée svp ? Merci bcp

Reply

Marsh Posté le 17-11-2007 à 12:10:04   

Reply

Marsh Posté le 17-11-2007 à 13:22:04    

Pas très pratique ce format de fichier. Mais tu peux utiliser fgets() pour lire le fichier ligne à ligne, et traiter les lignes lues avec sscanf().
Travaille bien ton pattern sscanf() et analyse son code retour, ça te permettra de savoir si les conversions ont bien fonctionné, et donc de savoir directement s'il s'agissait bien d'une ligne de nombres ou s'il s'agissait de texte que tu peux ignorer.

Reply

Marsh Posté le 17-11-2007 à 15:20:50    

Elmoricq a écrit :

Pas très pratique ce format de fichier. Mais tu peux utiliser fgets() pour lire le fichier ligne à ligne, et traiter les lignes lues avec sscanf().
Travaille bien ton pattern sscanf() et analyse son code retour, ça te permettra de savoir si les conversions ont bien fonctionné, et donc de savoir directement s'il s'agissait bien d'une ligne de nombres ou s'il s'agissait de texte que tu peux ignorer.


 
OK merci je vais essayer de regarder ça. Juste un truc (je suis pas doué en programmation je sais ^_^) : si je veux juste lire la 2e ligne de mon fichier comment je fais avec fgets ? Je suppose qu'il faut que je fasse une boucle mais concrètement j'ai un peu de mal à voir...Merci pour ton aide en tt cas

Reply

Marsh Posté le 17-11-2007 à 15:29:18    

Désolé, autre chose que j'ai oublié : la fonction sscanf marche lors des saisies clavier mais pour lire dans une fichier je n'y arrive pas...J'ai essayé fsscanf comme un abruti mais ça marche pas lol

Reply

Marsh Posté le 17-11-2007 à 15:29:44    

Goodspeed21 a écrit :

si je veux juste lire la 2e ligne de mon fichier comment je fais avec fgets ? Je suppose qu'il faut que je fasse une boucle mais concrètement j'ai un peu de mal à voir...Merci pour ton aide en tt cas


Tu lis la première ligne, puis à la prochaine lecture tu lis la seconde. [:klem3i1]

 

(pas d'autre moyen à moins de connaître d'avance la taille de la première ligne du fichier pour la passer)


Message édité par Elmoricq le 17-11-2007 à 15:30:18
Reply

Marsh Posté le 17-11-2007 à 15:31:40    

Goodspeed21 a écrit :

Désolé, autre chose que j'ai oublié : la fonction sscanf marche lors des saisies clavier mais pour lire dans une fichier je n'y arrive pas...J'ai essayé fsscanf comme un abruti mais ça marche pas lol


 
Euh non, scanf() lit sur le flux d'entrée standard, fscanf() lit sur un flux, et sscanf() lit dans une chaîne de caractères.
 
Et "ça marche pas" c'est un peu vague pour décrire le problème rencontré.

Reply

Sujets relatifs:

Leave a Replay

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