x4re a écrit :
Non mais j'ai cherché, J'ai compris qu'il faut par exemple pour 20:coca[1,50] . Je lance la lecture caractere par caractere jusque le ":" et apres je transorfme avec atoi()
|
Ton principal problème c'est que ta ligne possède deux séparateurs différents. T'as d'un coté les deux-points séparant la qté de l'objet, et de l'autre les crochets séparant l'objet de son prix. Or si tu regardes bien les outils classiques de ces genres de fichiers, tu verras que le séparateur est toujours le même. Il peut être choisi par l'utilisateur mais une fois choisi, il reste identique pour tous les éléments (je veux parler ici de l'outil de conversion de tableur en CSV)
Alors ça peut se faire bien sûr, mais tu galèreras plus que si tu utilises le même séparateur style 20:coca:1,50
Là tu pourras utiliser un outil fabuleux nommé strtok_r() qui se chargera lui-même du découpage et te donnera dans une petite boucle les items
- 20
- coca
- 1,5
Donc avant de continuer dans cette voie, dis-nous si tu as possibilité de te mettre plus aux standards habituels...
x4re a écrit :
mais je ne comprends pas comment faire par exemple si je choisit sprite qui est troisieme dans ma liste aller chercher directement le 3 sortir le pric et le nombre :s
|
Ton sprite n'est pas dans ton exemple initial. Pas évident de t'aider si tes exemples changent en cours de route et que tu ne nous les redonnes pas. Si je comprends bien, ta 3° ligne contient 3:sprite[x,y]
Le problème du C c'est qu'il est très bas niveau. Tes seuls outils de traitement de fichier sont
- lire un caractère
- lire x caractères
- lire une ligne
- se déplacer de x caractères en avant ou en arrière ou à partir du début ou de la fin
Donc faut que tu t'en sortes juste avec ça. A partir de là, t'as que deux possibilités
1) tu te crées ton propre index qui mémorise les items et leur position dans le fichier. Ensuite, quand tu cherches un item style "sprite", ton index te donne la position du premier caractère de la ligne donc tu peux y aller grâce à fseek() puis lire et traiter la ligne grâce à fgets() puis ta fonction perso qui en extrait les infos
2) à chaque fois que tu cherches un item, tu te mets au début du fichier avec fseek() et tu lis chaque ligne avec fgets() puis tu traites la ligne avec ta fonction perso et si tu trouves "sprite" tu fais ce qu'il faut
Tu remarqueras que dans les deux cas, j'ai parlé de ta fonction perso qui analyse la ligne. Tu t'en sortiras effectivement toujours mieux si tu écrits de petites fonctions dédiées à un traitement que tu pourras utiliser un peu partout plutôt qu'un gros bloc imbitable et non réutilisable. A toi de découper ton problème en tâches simples pouvant être dévolues à de petites fonctions individuelles.
Message édité par Sve@r le 04-03-2010 à 09:00:06
---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.