Ca plante et sa m'enerve

Résolu
cs_nach73 Messages postés 34 Date d'inscription dimanche 24 avril 2005 Statut Membre Dernière intervention 18 mai 2005 - 16 mai 2005 à 12:24
cs_magma Messages postés 198 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 18 mars 2011 - 16 mai 2005 à 15:22
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

cs_magma Messages postés 198 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 18 mars 2011
16 mai 2005 à 15:22
//------------------------------------------------------------------
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;
}
3
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
16 mai 2005 à 13:45
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 ++
0
bayeto Messages postés 224 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 18 octobre 2010
16 mai 2005 à 14:14
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...
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
16 mai 2005 à 14:57
Oui c'est plutot ca, car longueur est bien initialisé
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
16 mai 2005 à 15:07
A oui autant pour moi j'avais pas vu l'initialisation :)
0
Rejoignez-nous