doudinho06
Messages postés32Date d'inscriptionjeudi 16 juin 2011StatutMembreDernière intervention19 mai 2014
-
27 août 2012 à 15:36
livevlad
Messages postés8Date d'inscriptionvendredi 4 février 2011StatutMembreDernière intervention25 septembre 2012
-
17 sept. 2012 à 08:25
Bonjour,
Je vous expose mon probleme que j'arrive pas à resoudre depuis 2 jours!!
J'ai crérer deux fonction Copie_fichier1(path1) et Copie_fichier1(path2)
qui creent une copie, traitent et renvoie le chemin ou le fichier est stocké cela me pose pas problème. Parcontre lorsque j'appel ces deux fonction pour comparer les deux copie dans une autre fonction comme illustrer ci-dessous:
FILE *f1 = NULL;
Copie_path1=Copie_fichier1(path1);
f1 = fopen (Copie_path1,"r");
return Copie_path1;
cela me renvoie bien le chemin en question. et aussi
FILE *f2 = NULL;
Copie_path2=Copie_fichier2(path2);
f2 = fopen (Copie_path2,"r");
return Copie_path2;
Cela aussi me renvoie bien le chemin de la copie dans probléme , Par contre si je procede comme suit:
FILE *f1 = NULL;
FILE *f2 = NULL;
Copie_path1=Copie_fichier1(path1);
Copie_path2=Copie_fichier2(path2);
f1 = fopen (Copie_path1,"r");
f2 = fopen (Copie_path2,"r");
return Copie_path1;
le chemin retourné par Copie_fichier1 et toujours celui de Copie_fichier2 !!!?
Quelqu'un peut m'aider!
Merci d'avance
char* _stdcall CompareLOG(char *path1,char *path2)
{
char* Copie_path1;
char* Copie_path2;
char* S;
char in_line1[MAXLINE];
char in_line2[MAXLINE];
int Suppression1;
int Suppression2;
int resultat=111;
int i=1;
int TailleFile1=0;
int TailleFile2=0;
FILE *f1 = NULL;
Copie_path1=Copie_fichier1(path1);
f1 = fopen (Copie_path1,"r");
ed73
Messages postés276Date d'inscriptionlundi 8 septembre 2008StatutMembreDernière intervention15 avril 20132 28 août 2012 à 09:13
Bonjour,
Copie_fichier1 et Copie_fichier2 renvoient certainement un char * et Copie_Path1 et Copie_Path2 pointent donc sur la valeur retournée.
A mon avis, l'adresse retournée est la même pour les 2 fonctions (variable globale, statique, etc...) et au final les 2 variables pointent au même endroit.
Je suppose que par ailleurs, tes 2 fichiers s'ouvrent correctement.
doudinho06
Messages postés32Date d'inscriptionjeudi 16 juin 2011StatutMembreDernière intervention19 mai 20141 30 août 2012 à 13:55
Je suis bien daccord avec toi adel73 mais je vois pas de solution pour ce probléme car j'ai bien envie que Copie_Path1 et Copie_Path2 point chaqu'une vers leur propre chemin! pas vers le meme endroit!!
En règle générale, méfie-toi des fonctions qui retournent des pointeurs car ils peuvent soit pointer au même endroit, soit ne plus être valides après le retour de la fonction. Dans ces 2 cas, il faut recopier les données dès le retour de la fonction.
Vous n’avez pas trouvé la réponse que vous recherchez ?
livevlad
Messages postés8Date d'inscriptionvendredi 4 février 2011StatutMembreDernière intervention25 septembre 2012 17 sept. 2012 à 08:25
Dans les fonctions copier_fichier1/2, comment sont définies les variables qui sont ensuite retournées.
Sont-elles des char* dont tu alloues la mémoire via un malloc (ou new en c++) ou alors est-ce une déclaration du type char chaine[150].
Dans le second cas si tu retourne "chaine", la mémoire n'est plus consacré à cette variable et une autre fonction peut réécrire dessus.
En revanche dans le premier cas la mémoire alloué le reste jusqu'à un free (ou delete en c++).
Donc en gros dans les fonctions qui retourne des char*, alloue la mémoire de la variable dynamiquement pour éviter de perdre la réservation de l'espace mémoire utilisé.