Lecture dans un fichier : ligne par ligne - C++ - Programmation
Marsh Posté le 26-04-2003 à 15:52:42
utilise fgets
Code :
|
pour passer les lignes de commantaire il suffite de tester tampon[0] == '#'
ca ne marche que si le # est les premier caractère de la ligne. Ca ne marche pas si il y a des espaces avant par exemple.
Marsh Posté le 26-04-2003 à 17:41:56
et également mauvaise utilisation de feof, ...., fais une recherche sur le forum si tu veux en savoir plus
Marsh Posté le 26-04-2003 à 19:49:05
Heu, pour le feof, je vois pas le pb !!
J'ai bien cherché ds le forum, mais ce que j'ai vu semble pareil à ce que j'ai mis !
De plus, j'ai mis ceci :
Code :
|
Cette ligne de code est traitée si tampon est = au char #
Mon algo tourne de la façon suivante :
je prend la 1ere chaine de caractère du fichier (elle s'arrete au 1er espace rencontré)
je teste si cette chaine commence par un #
si oui, alors, je lit le reste de la ligne avec le fgets, et je repars au début
si non
je teste si elle est égale à "nb_noeuds"
si oui, je lit ensuite un entier
si non
je teste si elle est égale à "nb_arete"
si oui je lit ensuite un entier
si non je lit une chaine de caractère, puis une autre puis un entier
Voilà, maintenant ca à l'air de fonctionner !
Je vais faire un debug pas à pas (ce qui n'est pas franchement pratique sous win avec dev-c++)
merci @+
Miles
Marsh Posté le 26-04-2003 à 19:50:27
ReplyMarsh Posté le 26-04-2003 à 20:56:15
Merci pour le lien, je viens de le lire, mais ca ne m'éclaire pas des masses !!
Un coup de pousse svp ?
Merci @+
Miles
Marsh Posté le 26-04-2003 à 22:44:42
J'ai ca comme code qui marche bien :
Code :
|
Ca lit des fichiers du style
Code :
|
les nom des champs doivent etre en minuscule c'est la seule contrainte.
Bon je sais que c pas EXACTEMENT le format mais bon ca peut servir de base.
Pour s'en servir :
Code :
|
Voila avec les commentaires c mieux
Marsh Posté le 26-04-2003 à 23:19:02
Eh Bhé !!!!!!
J'ai rien compris de ton bout de code !!!
Je sais pas comment tu fait pour t'y retrouver, mais pour moi ce n'est que du charabiat !!!
Les noms de variables ne m'inspirent rien du tout !
Peut-etre que ca te ferait le même effet si je te montrais mes prog en C, mais là franchement ...
Peut-etre qu'avec qq explications ...
Mais, bon, je te remerecie quand même !
@+
Miles
Marsh Posté le 27-04-2003 à 13:40:11
Merci pour tes commentaires,
ca m'éclaire bien mieux !!
Mais, bon c'est un peu compliqué pour moi !
Surtout qu'on a pas vu toutes ces fcts en cours ! ( c'est un projet que je doit faire ! Dijkstra sur un réseau de la stas )
J'ai presque fini de refaire ma fonction, je la poste des que j'ai fini !!!
@+
Miles
Marsh Posté le 27-04-2003 à 13:53:13
Voilà, je pense avoir fini !!
J'ai compiler (sans erreurs), mais pas testé !
Voilà le code de ma fonction :
Code :
|
UNe explication des diverses fonctions non explicitées que j'appelle :
- Construire_Dico : va me contruire un dictionnaire avec mes nom de noeuds associés à un N°
- Ajoute_GRAPHE : va ajouter une arete au graphe tq A = ( S1 , S2, Pds )
voilà les différentes structures utilisées :
Code :
|
Bon c'est peut-être pas dans le bon ordre pour que ca fonctionne, mais du pts de vue de mes includes, c'est OK ! J'ai juste mis en vrac !!
Voilà, merci de votre aide,
AU fait, est-ce correct ?
[edit]
au fait, voilà le code de la fonction qui me cree le dico :
Code :
|
Est-ce que avec la méthode de lecture du fichier faite dans LireGRAPHE, celle de Construire_DICO va marcher ?
[/edit]
@+
Miles
Marsh Posté le 26-04-2003 à 15:42:28
Salut,
voilà je dois lire un fichier comprenant des commentaires, en évuitant ces caractères !
Mon fichier à lire se présente sous le forme :
# ceci est un commentaire
nb_noeuds 10
nb_aretes 20
# encore un commentaire
noeud1 noeuds2 10
noeud1 noeuds2 10
noeud1 noeuds2 10
noeud1 noeuds2 10
et ainsi de suite
voilà le code de ma fonction.
Voilà, donc je sais faire pour lire une chaine de caractère : fscanf ( fichier, "%s", tampon);
mais celà ne lit qu'une chaine de caractère jusqu'à l'espace ou le retour à la ligne qui la suit !
Ce que je voudrais, c'est savoir comment lire une ligne entière !!
En fait quand je lit la 1ere chaine de caract. et que celle là est en fait commence par #, alors c'est un commentaire ; donc je voudrais passer à la ligne suivante !
Comment fait-on ?
Merci @+
Miles