mon programme qui lit dans un fichier .ase ne se termine jamais ! - C++ - Programmation
Marsh Posté le 26-01-2003 à 15:49:43
++Taz a écrit : désolé, je sors tout de suite |
il va faire une attaque cardique le petit père taz
Marsh Posté le 26-01-2003 à 15:57:59
pourquoi fais tu une première passe pour compter les sections *MESHVERTEX ?
a priori ca sert à rien
Et puis sinon des noms de variables explicites ca serait déjà une bonne idée pour du code lisible; par ce que a, b, i ...
Marsh Posté le 26-01-2003 à 16:06:10
SchnapsMann a écrit : pourquoi fais tu une première passe pour compter les sections *MESHVERTEX ? |
je compte les *MESHVERTEX pour savoir combien il y a d'objets
et combien de fois la boucle for doit s'éxécuter (une fois par objet)
Marsh Posté le 26-01-2003 à 16:09:43
airseb a écrit : |
C'est bien ce qui me semblait, la première passe ne sert à rien. En traitant les sections à la volée ca marcherait aussi bien puisque tu n'as pas besoin de connaitre le nombre de sections pour en traiter une.
Pour ce qui est de la nom terminaison de ton programme je te conseille le débugueur parce que la il doit sans doute boucler sur une erreur de parsing.
Marsh Posté le 26-01-2003 à 16:12:31
SchnapsMann a écrit : |
excuse moi mais : c quoi une erreur de parsing et comment je dois utiliser le debugueur ?
Marsh Posté le 26-01-2003 à 19:16:14
Une erreur de parsing, c'est une erreur d'interprétation d'un texte (un fichier texte, dans ton cas). Avec le débuggeur, tu pourras vérifier au fur et à mesure les résultats des "fscanf", et trouver où se situe le problème. Mais pour apprendre à l'utiliser, mieux vaux lire la doc fournie avec (et surtout, ça dépend de ton environnement de travail).
Marsh Posté le 26-01-2003 à 22:09:11
Quelques conseils
1. indente un peux mieux...
2. évite les do... while pour parser, vaut mieux un while tout seul, le "do" implique que le code est executé au moins une fois, c'est dangereux!!
3. fscanf revoie comme valeur de retour le nombre paramètres lus, ça pourrait t'aider.
4. %d%f%f%f à éviter, ou alors écris le séparateur entre les formats, c'est plus clair.
5. un mélange de C et de C++, c'est assez casse-gueule (fscanf et cout, ça fait tache, ainsi que stdio.h et iostream.h )
6. fscanf et "%s%s%s", c'est trèèès casse geule
7. les variables globales sont à proscrire dans la majorité des cas!!!
Marsh Posté le 27-01-2003 à 03:14:04
feof n'est vrai que lorsqu'une lecture a échoué, pas dès que la prochaine va échouer.
Je ne me suis pas attardé sur le reste...
Marsh Posté le 27-01-2003 à 09:20:13
Angel_Eyes a écrit : Quelques conseils |
merci pour tes conseils
mais je voudrais savoir pourquoi : fscanf et "%s%s%s" c casse gueule ?
Marsh Posté le 27-01-2003 à 13:34:02
un scanf (sscanf, fscanf, ...) s'arrete sur le premier caractère ne correspondant pas à la valeur recherchée.
par exemple %d s'arrete à une lettre, une virgule ou autre chose n'étant pas un chiffre.
pour %s, il lit une chaine de caractères et s'arrete sur un caractère interprèté comme séparateurs d'une manière parfois assez tordue (espaces, fin de ligne, fin de chaîne,... pas toujours celui que l'on croit), c'est pas évident à maitriser si on commence et c'est une belle source d'erreurs.
Faut être sur de la manière dont scanf va séparer ton %s%s%s.
Marsh Posté le 26-01-2003 à 14:41:40
il semblerait que mon programme fait une boucle infinie.
la variable "nb_indices[b]"qui est vers la fin de la fonction "lecture" s'affiche mais pas les "hello"
je n'ai pas d'erreurs, le programme s'exécute mais ne sort jamais de la fonction.
pouvez vous m'aider ?
voici le code :
Message édité par airseb le 26-01-2003 à 14:42:15