chanandler
Messages postés86Date d'inscriptionmardi 18 janvier 2005StatutMembreDernière intervention 3 décembre 2007
-
8 mars 2005 à 22:38
magic_Nono -
22 mars 2005 à 15:58
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
#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
Vulpetrus
Messages postés70Date d'inscriptionjeudi 22 mai 2003StatutMembreDernière intervention21 décembre 2005 9 mars 2005 à 13:46
Excuses-moi, mais je ne vois pas ce qui te gène, rien ne t'empèche de
récuperer le contenu de tes variables en dehors de la boucle à partir
du moment où tu reste dans la même fonction.
Par contre si tu veux les récuperer quand tu es dans une autre fonction, c'est autre chose.
Tu dois alors avoir recours soit au pointeur, soit au variable globale, ou alors passation d'arguments...
Eclaires-moi un peu plus sur ton problème si tu n'est pas satisfait de ma réponse.
Vulpetrus
Messages postés70Date d'inscriptionjeudi 22 mai 2003StatutMembreDernière intervention21 décembre 2005 9 mars 2005 à 13:46
Excuses-moi, mais je ne vois pas ce qui te gène, rien ne t'empèche de
récuperer le contenu de tes variables en dehors de la boucle à partir
du moment où tu reste dans la même fonction.
Par contre si tu veux les récuperer quand tu es dans une autre fonction, c'est autre chose.
Tu dois alors avoir recours soit au pointeur, soit au variable globale, ou alors passation d'arguments...
Eclaires-moi un peu plus sur ton problème si tu n'es pas satisfait de ma réponse.
chanandler
Messages postés86Date d'inscriptionmardi 18 janvier 2005StatutMembreDernière intervention 3 décembre 2007 9 mars 2005 à 15:14
Bas en faite c'est en dehors de la boucle while que je vais récuperer
les variables et c'est la que ca bloque, si tu as une méthode a
m'expliquer je suis preneur !! Merci beaucoup
chanandler
Messages postés86Date d'inscriptionmardi 18 janvier 2005StatutMembreDernière intervention 3 décembre 2007 9 mars 2005 à 15:49
Oui je sors bien de la boucle mais quand disons aprés etre sorti de la boucle while(IdentifiantLigne[0]!='*')
je met ma variable MaxdB par exemple et que je fais un
cout<<MadB; bas le probléme c'est que je n'es qu'une valeur docn
l'effet de la boucle n'est plus la car elle permet de récuperer
plusieurs valeur. voila merci !
Vulpetrus
Messages postés70Date d'inscriptionjeudi 22 mai 2003StatutMembreDernière intervention21 décembre 2005 9 mars 2005 à 16:03
ah ok !
mais ton MaxdB[20] est une chaine unique :
Avec ta manière de faire tu écrases
l'ancienne valeur de MaxdB à chaque itération, utilise un tableau
: tu dois enregistrer dans MaxDB[i] et non dans MaxDB
créer un tableau de k chaines de 20 caractères : char MaxdB[k][20];
tu changes ton indice i à chaque itération de ta boucle !
chanandler
Messages postés86Date d'inscriptionmardi 18 janvier 2005StatutMembreDernière intervention 3 décembre 2007 9 mars 2005 à 16:43
Le fout<<MaxdB[i]<<",";
est la juste que j'avais fais des essaies et a cette endroit ca marché
mais si je fais donc ta méthode et donc j'enleve cette ligne
fout<<MaxdB[i]<<","; pour la mettre apres le
}while(IdentifiantLigne[0]!='*');
et
en mettant un cout a la place de fout ca ne marche pas car je n'es pas
de valeur a la place j'ai une ranger de signe comme celui si "|" et une valeur a la fin si tu as une idée merci d'avance.
chanandler
Messages postés86Date d'inscriptionmardi 18 janvier 2005StatutMembreDernière intervention 3 décembre 2007 9 mars 2005 à 17:19
Bon jai fais ton truc en remplacant K par la valeur de mon tableau mais
maintenant ca rempli tous le carré de petit trait et j'ai essayé aussi
de mettre j ici
for(int j=0;j<k;j++)
cout<<MaxdB[i]<<","; mais ca n'a rien changer. Encore merci de m'aider.
chanandler
Messages postés86Date d'inscriptionmardi 18 janvier 2005StatutMembreDernière intervention 3 décembre 2007 9 mars 2005 à 18:34
donc jai fais comme tu as dis et c'est toujours pareil car y a toujours
l'ecran qui est rempli de petite bar mais dans tous ca y a quelque
valeur que je veux récuperer donc voila les nouvelles lol merci
chanandler
Messages postés86Date d'inscriptionmardi 18 janvier 2005StatutMembreDernière intervention 3 décembre 2007 9 mars 2005 à 20:02
Je tes donné tous le code qui est pratiquement celui du debut. Voila je
te remercie beaucoup de te donné du mal pour moi. Voila bon courage et
merci encore
#include <string>
#include <fstream>
#include
#include <fcntl.h>
#include <string>
using namespace std;
void main(void)
{
char IdentifiantLigne[40]={'*'};
char Heure[20];
char MaxdB[20];
char TempsDeDepassement;
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);};
do
{
fin>>IdentifiantLigne;
switch(IdentifiantLigne)
{
case 'E':
fin>>Heure>>MaxdB>>TempsDeDepassement;
fout<<Heure<<MaxdB<<TempsDeDepassement<<endl;
break;
}
}while(IdentifiantLigne!='*');
//ici pouvoir réutiliser les 3 variable (Heure,MaxdB,TempsDeDepassement) avec leur contenu.
void main(void)
{
char IdentifiantLigne={'*'}; //Etant donné que c'est un seul caractère j'ai viré le [40]
char Heure[20];
char MaxdB[20];
char TabMaxdB[NOMBREMAXCOLONNES][20];
char TempsDeDepassement;
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);};
int compteur=0;
do
{
fin>>IdentifiantLigne;
switch(IdentifiantLigne)
{
case 'E':
chanandler
Messages postés86Date d'inscriptionmardi 18 janvier 2005StatutMembreDernière intervention 3 décembre 2007 9 mars 2005 à 21:11
Ca marche nickel, tu es un Dieu pour moi mais j'ai encore une toute
petit question en ésperant que j'abuse pas, voilà j'ai pigé en gros ce
que tu as fais mais j'ai pas réussi a récupérer une autre variable en +
de MaxdB par exemple pouvoir voir MaxdB et TempsDeDepassement au dehors
de la boucle et bien sur si c toujours possible que je puissse les
utiliser sans qu'il soit lié en gros faut que se soit 2 truc différent,
en ésperant de pas te taper sur le systéme lol Merci beacoup pour ce
grand pas que tu m'as fais faire.
Vulpetrus
Messages postés70Date d'inscriptionjeudi 22 mai 2003StatutMembreDernière intervention21 décembre 2005 9 mars 2005 à 21:38
lol !
Ben en fait tu dois faire la même chose :
tu crée un tableau pour TempsDeDepassement et tu l'enregistre : je te refais quand m^me le code en espèrant que tu as bien compris
void main(void)
{
char IdentifiantLigne={'*'}; //Etant donné que c'est un seul caractère j'ai viré le [40]
char Heure[20];
char MaxdB[20];
char TabMaxdB[NOMBREMAXCOLONNES][20]; // un tableau de NOMBREMAXCOLONNES colonnes de chaine de 20 caractères
char TempsDeDepassement;
char TabTempsDeDepassement[NOMBREMAXCOLONNES]; // un tableau de NOMBREMAXCOLONNES colonnes de chaine de 1 caractère
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);};
int compteur=0;
do
{
fin>>IdentifiantLigne;
switch(IdentifiantLigne)
{
case 'E':
fin>>Heure>>MaxdB>>TempsDeDepassement;
fout<<Heure<<MaxdB<<TempsDeDepassement<<endl;
strcpy(TabMaxdB[compteur],MaxdB);// copie de la chaine MaxdB dans TabMaxdB[compteur]
TabTempsDeDepassement[compteur]=TempsDeDepassement; // pour un caractère n'utilise pas strcpy, un egal suffit
compteur++;
break;
}
}while(IdentifiantLigne!='*');
//ici pouvoir réutiliser les 3 variables (Heure,MaxdB,TempsDeDepassement) avec leur contenu.
voilà, je te laisse faire les heures ;), mais je pense que tu as déja du le faire.
en fait le prob avec TempsDeDepassement c'est que c'est pas une chaine mais un caractère.
D'ailleurs pourquoi TempsDeDepassement est un caractère et pas une entier ?
..pour avoir toutes les infos sur l'enregistrement i de ton fichier tu récupère TabMaxdB[i-1] et TabTempsDeDepassement[i-1] , etc..
++
chanandler
Messages postés86Date d'inscriptionmardi 18 janvier 2005StatutMembreDernière intervention 3 décembre 2007 9 mars 2005 à 21:55
je viens de faire ce que tu me connseil mais voila tu me conseil de
mettre que 1 égal mais cela ne fonctionne pas car ca créer des erreurs
et aussi c'est le commentaire que tu m'as mis est " // pour un
caractère n'utilise pas strcpy, un egal suffit" mois toute c'est
variable contienne plusieurs caractére comme pour la variable MaxdB.
Encore merci
Je te demande juste si c'est possible de pouvoir lire les variables
mais qu'elle soit disocié un peut comme cette exemple trés mauvais en
desus :-)