MangaII
Messages postés129Date d'inscriptiondimanche 9 décembre 2001StatutMembreDernière intervention12 janvier 2009 27 janv. 2002 à 10:57
Salut !
Pour copier un fichier, tu as, en gros, 2 solutions ! soit tu utilise une fonction déjà existante (ex :les API windows) soit tu le fé toi même !
Si tu utilise une fonction existante, à moins qu'il y ai prévu un appel a une fonction Callback, tu pourra pas faire de barre de progression !
Par contre, si tu fé ton propre système de copie (et c pas bien compliqué), tu pourra y integrer tout ce que tu ve !
Pour copier un fichier, il fo ouvrir le fichier source, ouvrir le fichier destination, puis lire des blocs dans le source, et les ecrire dans le destination, et ce, jusqu'a la fin du fichier !
En gros, tu va utiliser des bloc de 1Ko (par exemple), ce qui fé que tu aura une boucle While, et a chaque passage dans la boucle, tu peu faire afficher la barre de progression !
Et voilà !
Jmgr
Messages postés67Date d'inscriptionvendredi 28 décembre 2001StatutMembreDernière intervention23 juin 2015 27 janv. 2002 à 13:23
Salut,
Mais avec les API, il y a bien la fonction CopyFileEx, mais elle ne marche qu'avec Windows NT ! (J'ai Windows 98) On peut faire autrement ?
Sinon pour ton système de copie, c'est intéressant, mais c'est bien :
FILE *fp,*fp2;
char temp[255]="Vide";
for(int i=0;strcmp(temp,"");i++)
{
fscanf(fp,"%s",&temp);
fprintf(fp2,"%s",temp);
}
ADPro22
Messages postés126Date d'inscriptionmercredi 18 juillet 2001StatutMembreDernière intervention27 octobre 2004 27 janv. 2002 à 14:10
Pour Windows 98 ultilise la fonction CopyFile (inclure winbase.h) mais il n'y a pas de barre de progression...
BOOL CopyFile(
LPCTSTR lpExistingFileName, // adresse du nom du fichier source
LPCTSTR lpNewFileName, // adresse du nom du fichier cible
BOOL bFailIfExists // flag renvoyé si le fichier éxiste déjà
);
MangaII
Messages postés129Date d'inscriptiondimanche 9 décembre 2001StatutMembreDernière intervention12 janvier 2009 27 janv. 2002 à 20:19
A priori, ton code est pas génial !
Si tu ve copier des fichier, ce ne sont pas forcéments des fichiers de texte, et dans ce cas, tu est obligé de lire des octets en mode bianire, et pas des chaines de caractère !
Déjà il fo ouvrir les fichier en binaire (voir la doc de fopen )
ensuite, utilise fread, et fwrite pour lite et écrire des bloc de donnée (en nombre d'octets) ! tu pe lire 1 octet, puis ecrire 1 octet !
Ensuite, ta boucle FOR est inutilisable dans ton cas ! il te fo utiliser un while, et pour tester si tu est a la fin du fichier, utilise feof !
Voilà, avec tout ca, tu as toutes les fonctions pour créé ta propre fonction copier !
moi411
Messages postés179Date d'inscriptionsamedi 22 novembre 2003StatutMembreDernière intervention25 juin 20173 29 juil. 2005 à 14:09
Bonjour à tous,
J'essaye moi aussi de faire une barre de progression en langage C
Mais j'ai un petit soucis: comment faire pour connaitre la taille
d'un répertoire (parce que je suppose que la copie ou la suppression de
fichiers
se fait grace à la taille et non avec le nombre de fichiers...).
J'ai essayé bêtement avec une fonction fopen puis en binaire comme
on le dit plus haut: (source=fopen("c:\\nomdurepertoire","rb+");) mais
ca ne marche pas.
J'ai ensuite essayé avec le nombre de fichiers mais même problème:
comment faire, cette fois,pour trouver le nombre de fichiers du
répertoire... Pour ne pas dire d'avoir perdu mon temps j'ai fait un
programme dans lequel je doit rentrer le nombre de fichier à copier au
clavier (le programme marche mais la barre en elle-même a un problème je n'arrive pas à le résoudre):
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
int x=954783; //nombre de fichiers à copier
int i=0; //indique quel fichier est copié
int j; //pourcentage de fichiers copiés
printf("Entrez le nombre de fichier a copier: ");
scanf("%d",&x);
while(i<=x)
{
j=(i*100)/x;
if((j%5)==0)
{
gotoxy(5,15);
printf("%d%",j);
}
i++;
}
printf("\n\n");
system("pause");
}
Pour faire court ma principale question est: comment on fait pour
se déplacer dans un répertoire, en trouver le nombre de fichiers etc.
en langage C?
Voila j'espère que je me suis bien expliqué et si qqun peut m'aider je le remercie d'avance. A plus tard.