Ca plante et sa m'enerve

[Résolu]
Signaler
Messages postés
34
Date d'inscription
dimanche 24 avril 2005
Statut
Membre
Dernière intervention
18 mai 2005
-
Messages postés
198
Date d'inscription
vendredi 4 avril 2003
Statut
Membre
Dernière intervention
18 mars 2011
-
Bonjour je suis
debutant j'essaie de copier un fichier source dans un fichier destinataire par des fonctions ci dessous.
Mais seulement il me creer bien mes 2 fichiers mais ne copie pas le fichier source dans destinataire.

int OuverFichierSource (char *fichier,FILE *fs)
{
if ((fs fopen(fichier,"rb")) NULL)
{

printf( "\nErreur: Impossible de lire le fichier %s \n",fichier);
system("PAUSE");
return 0;
}
return 1;
}
int OuverFichierDest (char *fichier,FILE *fd)
{ if ((fd fopen(fichier,"wb")) NULL)
{

printf( "\nErreur: Impossible d'ecrire le fichier %s \n",fichier);
system("PAUSE");
return 0;
}
return 1;
}


int CopieFichier(char *fichier,char *fichierDest)
{
FILE *fs;
FILE *fd;
int test;
char *memoir = (char *)malloc(TAILLE);
int longueur;
test=OuverFichierSource (fichier,fs);
if (test == 1)
{

OuverFichierDest(fichierDest,fd);
while((longueur = fread(memoir,1,TAILLE,fs)) != 0)
fwrite(memoir,1,longueur,fd);
fclose(fs);
fclose(fd);
free(memoir);
return 1;
}
return 0;
}

merci de votre aide.

5 réponses

Messages postés
198
Date d'inscription
vendredi 4 avril 2003
Statut
Membre
Dernière intervention
18 mars 2011
1
//------------------------------------------------------------------
FILE *OuverFichierSource(char *fichier)
{
FILE *fs;
if((fs fopen(fichier,"rb")) NULL) {
printf("\nErreur: Impossible de lire le fichier %s \n",fichier);
system("PAUSE");
}
return fs;
}


//------------------------------------------------------------------
FILE *OuverFichierDest (char *fichier)
{
FILE *fd;


if((fd fopen(fichier,"wb")) NULL) {
printf("\nErreur: Impossible d'ecrire le fichier %s \n",fichier);
system("PAUSE");
}
return fd;
}


//------------------------------------------------------------------
int CopieFichier(char *fichier,char *fichierDest)
{
FILE *fs, *fd;
int longueur;
char memoire[BUFSIZ];


if(fs = OuverFichierSource(fichier)) {
if(fd = OuverFichierDest(fichierDest)) {
while(!feof(fs)) {
longueur = fread(memoire, 1, BUFSIZ, fs);
fwrite(memoire, 1, longueur, fd);
}
fclose(fd);
}
fclose(fs);
return 1;
}
return 0;
}
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Il me semble qu'il y a un problème avec int longueur qui n'est pas
initialisé et qui vaut donc par défaut 0. Or tu l'utilises dans fwrite.
De plus pourquoi il existe à la fois TAILLE et longueur ?



PS: en général, return 0; ca veut dire, pas d'erreur :)



Aller ++
Messages postés
224
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
18 octobre 2010

Nan c'est pire que ca: tes fichiers sont bien ouverts dans les fonctions, mais comme le passage des arguments est par valeur, ben ton CopierFichier ne fait que reprendre la valeur qu'il a passé...

int OuvreFichierDest (char *fichier,FILE **fd)
{
*fd = fopen...
}
(...)

FILE *fd;
(...)
test = OuvreFichierDest(fichierDest,&fd);

Comme ca ton CopierFichier reconnaitra la valeur de retour de fopen de tes fonctions.


mayonaise tournera, bientôt, très bientôt...
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
8
Oui c'est plutot ca, car longueur est bien initialisé
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
A oui autant pour moi j'avais pas vu l'initialisation :)