begin process at 2012 05 29 20:57:46
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Probléme de boucle !!


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Probléme de boucle !!

mardi 8 mars 2005 à 16:29:18 | Probléme de boucle !!

chanandler

Bonjour ! Mon probléme est le suivant : J'ai un programme qui lit un fichier LieuDate1.txt (fichier donc le comptenu peut varier mais pas la forme )et ce programme prend différent champ de ce fichier pour le cpier dans un autre fichier2.txt et pour faire cela j'utiliser une boucle do while() mais dans mon code j'aurais besoin de récuperer en dehors de la boucle ce que contiene mais different variable comme MaxdB,Heure... donc j'aimerais savoir si il est possible de récuperer le comptenu d'un variable en dehors d'un boucle, si pouvait m'indiquer comment.
Merci beaucoup de votre aide !!


Mon code si dessous :

#include <fstream>
#include <iostream>
#include <fcntl.h>
#include <string>
using namespace std;

void main(void)
{

    char IdentifiantLigne[40]={'*'};

    char Heure[20]; //Sert pour récuperer l'heure dans le fichier LieuDate1.txt ( cette heure est sous forme de colonne dans ce fichier)

    char MaxdB[20];//Sert pour récuperer des lesures de dB dans le fichier LieuDate1.txt ( cette mesure est sous forme de colonne dans ce fichier)

    char TempsDeDepassement[20];//Sert pour récuperer le temps de dépassement dans le fichier LieuDate1.txt ( ce temps de dépassement est sous forme de colonne dans ce fichier)

    ifstream fin;
    ofstream fout;
    
   // le constructeur de ifstream permet d'ouvrir un fichier en lecture

    fin.open( "Lieu1Date1.txt", ios::in );
    fout.open("fichier2.txt", ios::out);
    if(!fout) {cout<<"erreur";exit(-1);};


//Boucle de récuperation de different champ du fichier LieuDate1.txt
  do
{
    fin>>IdentifiantLigne;
    switch(IdentifiantLigne[1])
    {

    case 'E':
            fin>>Heure>>MaxdB>>TempsDeDepassement;
            fout<<MaxdB<<",";
            break;

    }

}while(IdentifiantLigne[0]!='*');









  





mardi 8 mars 2005 à 16:58:06 | Re : Probléme de boucle !!

fabrice_pi

Salut,
tu peux te servir de tes variables Heure, MaxdB, TempsDeDepassement en dehors de ta boucle sans problèmes. Par contre tu auras uniquement ceux de la dernière ligne de ton fichier. Si tu veux tous les garder, fait des tableaux.
Fabrice

--
I firmly believe that, when a computer program works, it's a complete coincidence.
mardi 8 mars 2005 à 17:15:32 | Re : Probléme de boucle !!

chanandler

Vi jai bien vu que cela prenait que la derniere ligne de mon fichier mais pourrait s'il te plait m'indiquer la méthode que tu m'as expliquer avec les tableau en faisant un exemple ou autre si possible merci de ton aide
mardi 8 mars 2005 à 18:13:54 | Re : Probléme de boucle !!

tibob51

Membre Club

Si veux récuperer plusieur valeur il te faut un tableau:

Voici ton exemple modifié:

char *tablo[40]; //Crétion d'un point vers un tableau  


 
do
{
    fin>>IdentifiantLigne;
    switch(IdentifiantLigne[1])
    {

    case 'E':
            fin>>Heure>>MaxdB>>TempsDeDepassement;
              t[a]=new char[40]; //Création d'une nouvelle entrée (40 carac max)
strcpy(tablo[a],Heure);  //Copie de Heure dans le tablo
fout<<MaxdB<<",";
            break;
/*
Pour récuperer les élements utilise la syntaxe suivante:
t[numéro de l'enregistrement voulu];
*/
delete[] t; //N'oublie pas de detruire ton tableau
    }

}while(IdentifiantLigne[0]!='
*');


Voilà j'espère que cet exemple te servira...

mardi 8 mars 2005 à 18:43:02 | Re : Probléme de boucle !!

chanandler

J'ai du rater un truc je crois car ca ne marche pas.
Moi j'ai remplacer t[a] par tablo[a] car sinon ca faisait des erreurs et disons quand je fais un cout<< sur t[numéro de l'enregistrement voulu]; bas y a rien qui s'affiche et même si je le met a en dehors de la boucle do while() ca ne marche pas non plus. Merci de ton aide
mardi 8 mars 2005 à 23:24:40 | Re : Probléme de boucle !!

tibob51

Membre Club
Excuse j'aurai du relire j'ai fait deux bourres:
-Tu a raison c'est bien tablo[a];
-Et modifi le code comme ceci:

int a=0; //J'ai oublié ça!!!!!
do
{
    fin>>IdentifiantLigne;
    switch(IdentifiantLigne[1])
    {

    case 'E':
            fin>>Heure>>MaxdB>>TempsDeDepassement;
              t[a]=new char[40]; //Création d'une nouvelle entrée (40 carac max)
             a++;//ET ceci

Voilà ca devrai mieu marcher!
mercredi 9 mars 2005 à 08:53:39 | Re : Probléme de boucle !!

fabrice_pi

Salut,

Il est toujours préférable de chercher sont code soit même... Par contre j'ai une remarque : je commence à apprendre le C++ alors arrêtez moi si je me trompe. Il me semble qu'il y a des bibliothéques (list, vector, ...) qui seraient beaucoup plus simples à utiliser qu'un tableau (et peut-être plus dans l'espris du C++ ?).
Fabrice

--
I firmly believe that, when a computer program works, it's a complete coincidence.
mercredi 9 mars 2005 à 09:26:32 | Re : Probléme de boucle !!

chanandler

Juste une appaté pour fabrice_pi : je suis d'accord que c'est mieux d'apprendre tous seul mais ca fais 15 jours que ca me prend le choux ce truc donc voila mais si tu as une autre idée pour mon prbléme je veux bien merci.

Pour tibo51 : jai fais les modifs de ton code sauf que maintenant que je lance le programme y a une erreur windows donc rien ne s'affiche pour voir si il y a bien la chaine de caractére dans la variable tablo donc soit je me suis plenter ou autre je ne sais pas. Merci

Le code que j'ai fait :

    int a=0;
    do
{
    fin>>IdentifiantLigne;
    switch(IdentifiantLigne[1])
    {

    case 'E':
            fin>>Heure>>MaxdB>>TempsDeDepassement;
            tablo[a]=new char[40];
            a++;
            strcpy(tablo[a],Heure); 
            //fout<<MaxdB<<",";

            break;
            cout<<tablo[10];
    }


}while(IdentifiantLigne[0]!='*');

mercredi 9 mars 2005 à 09:38:13 | Re : Probléme de boucle !!

fabrice_pi

Donne l'erreur windows ! Y'a au moins une chose évidente : Si tu as plus de 40 lignes ça va planter puisque tu n'as déclaré qu'un tableau de taille 40... D'où l'utilisation de vecteur ou de list dont la taille est dynamique. Deuxième point :
            tablo[a]=new char[40]; // tu alloues tablo[a],
            a++; // tu incrémentes a
            strcpy(tablo[a],Heure);  // tu copies dans ton 'a' incrémenté
, donc dans tablo[a+1] qui n'est pas alloué.
C'est simplement de la prog ! Et apprend à lire les erreurs ça peut aider...
Fabrice
--
I firmly believe that, when a computer program works, it's a complete coincidence.
mercredi 9 mars 2005 à 09:52:57 | Re : Probléme de boucle !!

chanandler

Bas en faite c'est le rapport de windows qui s'ouvre et qui me dit que le fichier.exe a recontrer une erreur (AppName: fichier.exe     AppVer: 0.0.0.0     ModName: fichier.exe
ModVer: 0.0.0.0     Offset: 00022ef2) sinon jai fais un essai en mettant 200 au lieux de 40 par exemple et c'est toujours pareil voila merci

1 2

Cette discussion est classée dans : fichier, boucle, txt, récuperer, lieudate1


Répondre à ce message

Sujets en rapport avec ce message

Utiliser une variable en dehors d'un boucle !! [ par chanandler ] Bonjour ! Mon probléme est le suivant : J'ai un programme qui lit un fichier LieuDate1.txt (fichier donc le comptenu peut varier mais pas la forme )et aide pour création forcée d'un fichier txt (et écriture)... [ par scelw ] De la même façon que pour "forcer" l'affichage d'un printf() ou d'un cout << "texte_à_afficher", il faut utiliser un "flush" (cout << "texte_à_affiche boucle fopen [ par vercd7am ] Bonjour, j'aurai aime savoir comment faire un boucle de fopen. Voila pour l'instant ce que j'ai [code=cpp]FILE* fichier = NULL; // nombre de points recuperer le contenu d'un CEdit en fichier .txt [ par manyyy67 ] Bonjour, Je debute en c++, je suis charger des faire quelque ameliorations sur un (gros) programme professionel en c++(le IE est visual C++ 6 et le pr fichier et tiste simplement chainee en c [ par IMFM ] Salut, j'aimereis avoir une idee svp sur ce point. j'ai besoin de creer un fichier de transaction_date.txt où "date" est la date du jour. les transact Récuperer le chemin complet d'un fichier avec OpenFileDialog en C++.Net [ par johnASP ] Bonjour, Je travail sous Visual Studio v.2005. Je voudrais, aprés l'ajout d'un fichier via la fonction "openFileDialog", récupérer le chemin d'accés Modification virgule fichier .txt [ par necromoine ] Bonjour, je souhaite faire un code qui permet de mettre un retour à la ligne apres chaque virgule d'un fichier texte, qui ressemblerait à : Contenu t efstream, impossibilité d'écrire dans un fichier .txt [ par LaGrandeBete06 ] Bonjour à tous, Je viens de me mettre au C++ et je dois créer et ouvrir un fichier .txt avec une methode, puis j'appelle une autre methode pour écrir détection dans un fichier txt [ par johnASP ] Bonjour à tous! J'aurais voulu savoir comment faire pour tester si une ligne d'un fichier txt commence par une chaine de caractére spécial (ex: si la C dup utilisation [ par Tom59247 ] Bonjour à tous ! Je réalise actuellement un petit programme qui me permet de mettre quelques infos dans un fichier txt. Après quelques recherches j'


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 7,847 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales