Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Lire/Ecrire dans un fichier txt, pb, besoin d'aide [ Archives / Au secours ] (eupeup)

mardi 9 août 2005 à 17:30:48 | Lire/Ecrire dans un fichier txt, pb, besoin d'aide

eupeup

Salut a tous, j'ai un probleme avec une appli que je dois coder. Je suis un matheux et non un codeur, vous m'excuserez. J'ai un fichier xml, et je dois extraire les donnees comprises entre certaines balises, puis les importer dans un fichier txt tout simple. En gros les donnees que je dois extraire sont toujours des nombres (positifs et negatifs) et je dois les importer les un a la suite des autres dans le fichier txt de reception. Comme je suis pas totalement nul, j'ai deja bien avance. J'ai utilise un tableau a 2 dimensions, une case pour chaque caractere, dans lequel tous les caracteres du fichier xml sont places(lignes par lignes et caract par caract). Chaque lignes de mon tab correspond a une ligne du fichier. J'ai ensuite utilise un second tableau dans lequel j'ai extrait du premier les donnees dont j'ai besoin ( je rappelle que ce sont les caracteres compris entre certains types de balises) Ainsi j'ai un tableau a 2 dim qui contient exactement les elements que je dois afficher dans mon fic txt. Mon probleme c'est que mon tableau est de la forme: char destination[1000][1000]; Et que pour ecrire dans un fichier j'utilise : fprintf qui prend en argument un char* Alors vous me diriez : utilise un tableau char* pour stocker les donnees mais je suis oblige d'utiliser un char car j'utilise fgetc() pour recuperer les donnees du fichier initial. J'ai egalement essaye de caster comme suit: (char*)destination[i][j] Ou d'utiliser itoa (car fgetc() retourne un int) Rien ne marche, toujours la meme erreur ("memory couldn't be read....de mescouiles") Je suis degoute, car je suis une quiche, mais j'ai qd meme bien avance, je sais exactement ce que je dois faire pour terminer (une double boucle for pour parcourir mon tableau et en afficher le contenu) mais je suis bloque a cause d'une erreur de compatibilite.... Si quelqu'un peut me debloquer, ca serait genial, j'imagine qu'il y a une solution toute simple, que je suis pas le seul a qui s'est arrive... Merci d'avance

mardi 9 août 2005 à 18:00:44 | Re : Lire/Ecrire dans un fichier txt, pb, besoin d'aide

vecchio56

Administrateur CodeS-SourceS
Pour être sur de bien comprendre, j'aimerais bien que tu donne un exemple avec un fichier xml d'entrée, et le txt que tu voudrais qu'il génère

mardi 9 août 2005 à 18:23:14 | Re : Lire/Ecrire dans un fichier txt, pb, besoin d'aide

MNEMONIC

...
Pour répondre à la question :
1ère ligne de tont tableau -> destination
2ème ligne -> destination +1000
etc...

La première adresse de ton tableau correspond à destination[0][0].

Donc l'endroit où tu dois récupérer tes données doit correspondre en gros à
fprintf(fichier,"%s",(char *)destination+(1000*numeroligne)).

Si tu n'as pas mis un '\0' après le dernier caractère, y'a des chances pour qu'il aille lire en dehors du tableau...

Quand tu fais un char*destination[i][j], c'est un magnifique tableau de pointeurs...mais il n'a pas de mémoire allouée, du coup, quand tu essayes de lire, il se gauffre.

En dehors de la question : J'ai l'impression que tu te compliques la vie pour pas grand chose...
Si j'ai bien compris, ton fichier doit avoir en gros la tête suivante :

blabla
<balise>12345</balise>
blabla

donc, dans ta boucle de lecture :
   tu récupères la ligne
   tu recherches s'il y a une balise de ta liste
   s'il y en a une, tu recherches la position de la balise fermante
   tu copies ou tu concatènes dans un buffer ce qui se trouve entre la position du dernier caractère de ta balise ouvrante et la première position de ta balise fermante
   
A la fin de ta boucle de lecture, tu écris la totalité d'un bloc...
Du coup, tu économises des boucles...

Au besoin contacte moi...

mercredi 10 août 2005 à 00:24:03 | Re : Lire/Ecrire dans un fichier txt, pb, besoin d'aide

eupeup

Merci d'avoir repondu aussi vite. EN fait je dois traiter plusieurs fic xml, pour l'instant j'essaye avec un, mais c'est pareil si yen a plusieurs, ils se presentent de la maniere suivante: results/VanillaSwaps-1.0 Cross Asset HJM Pfe Pfe 1. MarketData.InterestRate.DiscountCurve.EUR 2005-07-28 2005-07-29 2005-07-30 2005-07-31 2005-08-01 2005-08-02 2005-08-03 2005-08-04 2005-08-12 2005-08-27 2005-09-11 2005-09-26 2005-10-12 2005-10-27 2005-11-11 2005-11-26 2005-12-11 2005-12-27 2006-01-11 2006-01-26 2006-02-25 2006-03-28 2006-04-27 2006-05-28 2006-06-27 2006-07-28 2006-08-27 2006-09-26 2006-10-27 2006-11-26 2006-12-27 2007-01-26 2008-04-26 2008-07-27 2008-10-26 .................... 2032-07-21 2033-07-21 2034-07-21 2035-07-21 1 0 5 0 -22.9400220196 -15.7788683934 -10.1758117733 3.8876128095 -0.398023237 -5.3943060373 0.506538714 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. -22.9400220196 -10.2391096425 -5.0229244988 -55.0837858913 -122.6711243249 -108.6642762044 -166.1230032338 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ................... ca continue comme ca pendant 500 lignes Donc voila j'ai plusieurs fichier de ce type a traiter et je dois extraire uniquement les données comprises entre les balises Toutes ces valeurs sont mises les unes à la suite des autres Voila un exemple de fichier attendu en sortie(ce n'est pas le ficher correspondant a l'exemple donne juste au dessus ): 7074.172271 5391.820864 8387.310205 15267.56164 21532.51835 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7074.172271 9334.812255 4148.170259 2487.135171 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7074.172271 863.805528 202.4335042 226.8111923 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7074.172271 2124.999157 9387.791606 12892.11033 24064.05988 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7074.172271 8055.980162 4523.218691 3755.798209 4157.319935 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7074.172271 4455.415948 17173.05422 13662.63372 38819.09545 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7074.172271 9367.52481 2539.731005 2394.859022 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7074.172271 19322.34569 9920.745488 13451.7085 12866.61673 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7074.172271 8196.833559 3727.176131 6757.298654 0 0 0 0 0 0 0 0 0

mercredi 10 août 2005 à 10:12:20 | Re : Lire/Ecrire dans un fichier txt, pb, besoin d'aide

MNEMONIC


#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    FILE* fic1 = fopen("fic1.txt","r");
    FILE* fic2 = fopen("ficDest.txt","w");
    char ligne[500];
    char* valW = ligne+8;
   
    if((fic1!=NULL)&&(fic2!=NULL))
    {
        for(;;)
        {
            if(fgets(ligne,500,fic1)==NULL)
                break;
            if(!strncmp(ligne,"<Values>",8))
            {
                for(int x=8;;x++)
                {
                    if(ligne[x]=='<')
                    {
                        ligne[x]='\n';
                        ligne[x+1]='\0';
                        break;
                    }
                }
                fputs(valW,fic2);
            }
        }
        fclose(fic1);
        fclose(fic2);
    }
    else
    {
        cout << "erreur d'ouverture des fichiers" << endl;
        return EXIT_FAILURE;
    }
    return EXIT_SUCCESS;
}


mercredi 10 août 2005 à 10:28:40 | Re : Lire/Ecrire dans un fichier txt, pb, besoin d'aide

eupeup

Merci, c cool d'avoir passer un peu de temps. Je vais me mettre dessus pour voir, le fichier de destination est vide, ca doit pas etre grand chose...

mercredi 10 août 2005 à 10:47:02 | Re : Lire/Ecrire dans un fichier txt, pb, besoin d'aide

steve_clamage

Utilise une bibliothèque pour manipuler des fichier xml, ca sera plus simple, plus sur et plus modulable.

mercredi 10 août 2005 à 10:47:45 | Re : Lire/Ecrire dans un fichier txt, pb, besoin d'aide

eupeup

Merci Mnemo, en fait ca fonctionne, l'erreur a ete trouve rapidement avec un ptit coup de debugger. En fait dans mon fichier xml il y a des tabulations, et notemment il y en a une devant chaque balise Values, ce qui fait que lorsqu'il check la ligne et bien elle rentre pas dans la condition car en realite il faut if(!strncmp(ligne,"\t",9)) a la place de if(!strncmp(ligne,"",8)) Il y a encore des ptits details, il affiche egalement "<", enfin bon la c'est cool, dans 5min c fini. Serieux merci, de mon cote j'avais bien avance et je m'etais bien debloque ce matin, je pense que j'aurais un truc propre avec un peu de taf, mais ton code est bcp plus simple que le mien. Merci

mercredi 10 août 2005 à 10:50:05 | Re : Lire/Ecrire dans un fichier txt, pb, besoin d'aide

eupeup

Je connais pas de biblio qui gere les doc xml Je vais chercher

mercredi 10 août 2005 à 10:52:20 | Re : Lire/Ecrire dans un fichier txt, pb, besoin d'aide

xterminhate

Membre Club
MinXL ? ... ok je sors ;-) Regarde dans mes sources....


1 2

Cette discussion est classé dans : fichier, donnees, tableau, txt, utilise


Répondre à ce message

Sujets en rapport avec ce message

fichier txt à un tableau [ par angereveur ] comment on peut convertir simplement un fichier texte comprenand des mesure à un tableau deux dimensions??? Imprimer un tableau et un fichier txt [ par fred23 ] Bonjour,Je souhaiterais savoir comment je peux imprimer:un tableau[i][j] et un fichier texte de type toto.txtLe tout en C++.Merci.Fred23 Extraire des donnees d'un fichier txt ... ??? [ par kvndevils ] Voila Mon fichier txt se presentre de la maniere suivante :10 124 TOTO6 TITI-1OTOTTIITles 2 premier int designent les valeurs de 2 constantes ensuite prog en C, ecriture puis lecture de donnees de donnees dans un fichier fichier txt [ par 01472583690 ] Salut a tous ! voici mon probleme : Dans mon programme l'utilisateur doit entrer des donnees ( des char (nom, ville .....) , ainsi que des int ( age, lire un fichier .txt [ par inconnu2nulpar ] slt, dans un fichier .txt j'ai des coordonné de point sous la forme :x1,y1x2,y2...mais je ne sait pas comment les récupéré et les mettre dans un table Lire dans un *.txt un tableau de long ecrit par cfile [ par kididouille ] Bonjour j'ai un pb:J'ai un tableau de long  "long *TabProj;" je desire enregistrer le contenu de ce tableau dans un fichier texte: CFile Fichier;Fichi charger fichier txt dan tableau [ par hazemwannous ] Bonjour à tous ;j'ai un problème lorsque j'essaye de lire un fichier (.txt) et stocker le continu dans un tableau. mon fichier (.txt) est de trois col Tableau et fichier txt [ par cleloa ] Salut tout le monde !Alors voilà, je suis en plein combat  ac le langage c pour reussir à :Importer des données d'un fichier txt dans un tableau de st mots croisés [ par bissmillah ] J'aimerai avoir de l'aide grace aux menbres inscrits,c'est a props d'un projet que j'ai a faire en c++ (les mots croisés),je doit créer un fichier tex Télécharger automatiquement un fichier txt a partir d'un url en aspx [ par zebulon88 ] Bonjour à tousJe précise que je suis débutant...Je souhaiterais faire un programme en C++.net pour télécharger automatiquement sur un site internet en


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,374 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.