Probleme variable fichier [ langage C ] - C - Programmation
Marsh Posté le 03-03-2010 à 13:11:20
Ben non, cf les règles du forum .
Travaille déjà par toi même et viens avec des questions précises lorsque tu buteras sur quelque chose de précis...
Marsh Posté le 03-03-2010 à 15:01:07
Ok Ca marche j'ai un petit soucis deja je poste ici si je dois reouvrir un topic dites le moi .
j'aimerai
Creer un fichier de type .txt avec pour forme
25:coca[1,00]
42:looza[1.20]
46:biere[0.80]
Le premier chiffre etant le nombre de ex: coca restant , et le chiffre entre crochet le prix.
J'aimerai récupérer ces deux variables comment faire ? :s
j'ai comme idée de mettre fscanf
mais je ne vois pas la methode a utiliser .
Merci d'avance
Marsh Posté le 03-03-2010 à 15:38:37
en vrac fopen, fclose, fgets, sscanf (ou autres, gros doute soudain sur la méthode en C), strtof
Marsh Posté le 03-03-2010 à 17:32:54
Avoir su recopié l'énoncé c'est plutôt léger comme recherche personnelle avant de venir poser des questions...
http://www.google.fr/search?q=mani [...] =firefox-a
Bon courage...
Marsh Posté le 03-03-2010 à 19:06:38
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() 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
Marsh Posté le 04-03-2010 à 08:33:10
x4re a écrit : Non mais j'ai cherché, J'ai compris qu'il faut par exemple pour 20:coca[1,50] . |
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.
Marsh Posté le 04-03-2010 à 23:23:02
okok Merci beaucoup je vais plancher sur ca demain
Bonne soirée
Marsh Posté le 03-03-2010 à 13:00:37
Bonjour tout le monde,
Voila j'ai commencé le C début octobre.Et dans le cadre de notre cours je dois "creer" une "caisse enregistreuse" pour un bar.
Et j'aimerai avoir l'aide d'une ou plusieurs personnes pour monter a bien ce projet.
Par de l'aide je veux dire que si je suis coincé dans un bout de code on ne me donne pas la reponse mais une direction a prendre.
Est-ce possible ? :
Message édité par x4re le 03-03-2010 à 14:51:00