begin process at 2012 02 07 08:39:18
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichiers / Disque

 > DUPLICATEUR DE FICHIERS

DUPLICATEUR DE FICHIERS


 Information sur la source

Note :
5,5 / 10 - par 2 personnes
5,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Fichiers / Disque Classé sous :copie, fichier, duplicateur, standard, c Niveau :Débutant Date de création :30/04/2007 Date de mise à jour :17/05/2007 13:38:57 Vu / téléchargé :4 830 / 196

Auteur : 0v3rb1t

Ecrire un message privé
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

Programme servant à dupliquer n'importe quel fichier.
Faites glisser un fichier sur l'exécutable et entrer le nombre de copies désirées (INT_MAX au maximum).
Les fichiers copiés auront même nom et extension que le fichier original et seront normalement copiés dans le répertoire oû se situe l'exécutable.
N'oubliez pas le .zip.

Source

  • /* 0v3rb1t */
  • #include <stdio.h>
  • #include <stdlib.h>
  • #include <string.h>
  • /* taille du bloc en memoire */
  • #define TAILLE_BUFFER (1024*32)
  • /* Prototype de la fonction copie_fichier */
  • void copie_fichier(FILE *fichier_source, char chemin_absolu[]);
  • int main(int argc, char *argv[])
  • {
  • FILE *fichier_source = NULL;
  • /* Si l'utilisateur n'a pas fait glisser un fichier sur l'executable, on lui rappelle */
  • if(argc<2)
  • {
  • printf("Faites glisser un fichier sur l'executable.");
  • getchar();
  • return EXIT_SUCCESS;
  • }
  • /* Ouverture du flux vers le fichier source */
  • fichier_source = fopen(argv[1], "rb");
  • /* Si l'ouverture a echoue on quitte */
  • if(fichier_source==NULL)
  • {
  • fprintf(stderr, "erreur lors de l'ouverture du fichier source");
  • getchar();
  • exit(EXIT_FAILURE);
  • }
  • /* On appelle la fonction qui va dupliquer le fichier */
  • copie_fichier(fichier_source, argv[1]);
  • printf("Copie effectuee avec succes");
  • getchar();
  • return EXIT_SUCCESS;
  • }
  • void copie_fichier(FILE *fichier_source, char chemin_absolu[])
  • {
  • int numero_fichier, taille_nom, nombre_copies, i, j, k;
  • size_t longueur;
  • char nom_fichier[100] = "", numero_fichier_caractere[10]= "", extension[10] = "";
  • FILE *fichier_copie = NULL;
  • /* On alloue un bloc de memoire necessaire a la copie du fichier source */
  • unsigned char *zone_allouee = malloc(TAILLE_BUFFER);
  • /* Si l'allocation a echouee on quitte */
  • if(zone_allouee==NULL)
  • {
  • fprintf(stderr, "erreur lors de l'allocation de memoire");
  • getchar();
  • fclose(fichier_source);
  • exit(EXIT_FAILURE);
  • }
  • /* On separe et stocke le nom et l'extension du fichier dans deux chaines differentes */
  • for(i=0; chemin_absolu[i] != '\0'; i++)
  • {
  • if(chemin_absolu[i] == '.')
  • {
  • for(j=i; chemin_absolu[j] != '\\'; j--);
  • j++;
  • for(k=0; chemin_absolu[j] != '.'; j++, k++)
  • nom_fichier[k] = chemin_absolu[j];
  • for(k=0; chemin_absolu[j] != '\0'; j++, k++)
  • extension[k] = chemin_absolu[j];
  • }
  • }
  • taille_nom = strlen(nom_fichier);
  • /* On demande le nombre de copies a l'utilisateur */
  • do
  • {
  • printf("Nombre de copies: ");
  • scanf("%d",&nombre_copies);
  • }
  • while(nombre_copies < 0);
  • puts("");
  • /* Boucle de duplication du fichier source */
  • for(numero_fichier=0; numero_fichier < nombre_copies; numero_fichier++)
  • {
  • /* On initialise la chaine qui contient le numero du fichier a 0 */
  • for(i=0;numero_fichier_caractere[i] != '\0'; i++)
  • {
  • numero_fichier_caractere[i] = 0;
  • }
  • /* On efface tous les caracteres se situant apres le nom du fichier */
  • for(i=taille_nom;nom_fichier[i] != '\0'; i++)
  • {
  • nom_fichier[i] = 0;
  • }
  • /* On convertie le numero entier du fichier en sa representation sous forme de caracteres */
  • sprintf(numero_fichier_caractere, "%d", numero_fichier+2);
  • /* On concactene le numero du fichier a son nom */
  • strcat(nom_fichier, numero_fichier_caractere);
  • /* On concactene l'extension du fichier a son nom+numero */
  • strcat(nom_fichier, extension);
  • /* Ouverture du flux vers le fichier de copie */
  • fichier_copie = fopen(nom_fichier, "wb");
  • /* Si l'ouverture a echoue on quitte */
  • if(fichier_copie==NULL)
  • {
  • fprintf(stderr, "erreur lors de l'ouverture du fichier copie");
  • getchar();
  • free(zone_allouee);
  • fclose(fichier_source);
  • exit(EXIT_FAILURE);
  • }
  • /* On copie le contenu du fichier source dans le fichier copie */
  • while((longueur = fread(zone_allouee,1,TAILLE_BUFFER,fichier_source)) != 0)
  • {
  • fwrite(zone_allouee,1,longueur,fichier_copie);
  • }
  • /* On remet le curseur au debut du fichier source */
  • rewind(fichier_source);
  • /* On ferme le flux du fichier copie */
  • fclose(fichier_copie);
  • }
  • /* Une fois les copies terminees on ferme le flux du fichier source */
  • fclose(fichier_source);
  • /* On libere la memoire allouee pour la copie du fichier source */
  • free(zone_allouee);
  • }
/* 0v3rb1t */


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* taille du bloc en memoire */
#define TAILLE_BUFFER (1024*32)


/* Prototype de la fonction copie_fichier */
void copie_fichier(FILE *fichier_source, char chemin_absolu[]);




int main(int argc, char *argv[])
{
    FILE *fichier_source = NULL;

    /* Si l'utilisateur n'a pas fait glisser un fichier sur l'executable, on lui rappelle */
    if(argc<2)
    {
        printf("Faites glisser un fichier sur l'executable.");
        getchar();
        return EXIT_SUCCESS;
    }

    /* Ouverture du flux vers le fichier source */
    fichier_source = fopen(argv[1], "rb");

    /* Si l'ouverture a echoue on quitte */
    if(fichier_source==NULL)
    {
        fprintf(stderr, "erreur lors de l'ouverture du fichier source");
        getchar();
        exit(EXIT_FAILURE);
    }

    /* On appelle la fonction qui va dupliquer le fichier */
    copie_fichier(fichier_source, argv[1]);

    printf("Copie effectuee avec succes");
    getchar();


    return EXIT_SUCCESS;

}






void copie_fichier(FILE *fichier_source, char chemin_absolu[])
{
    int numero_fichier, taille_nom, nombre_copies, i, j, k;
    size_t longueur;
    char nom_fichier[100] = "", numero_fichier_caractere[10]= "", extension[10] = "";
    FILE *fichier_copie = NULL;
    /* On alloue un bloc de memoire necessaire a la copie du fichier source */
    unsigned char *zone_allouee = malloc(TAILLE_BUFFER);

    /* Si l'allocation a echouee on quitte */
    if(zone_allouee==NULL)
    {
        fprintf(stderr, "erreur lors de l'allocation de memoire");
        getchar();
        fclose(fichier_source);
        exit(EXIT_FAILURE);
    }

    /* On separe et stocke le nom et l'extension du fichier dans deux chaines differentes */
    for(i=0; chemin_absolu[i] != '\0'; i++)
    {

        if(chemin_absolu[i] == '.')
        {

            for(j=i; chemin_absolu[j] != '\\'; j--);

            j++;
            for(k=0; chemin_absolu[j] != '.'; j++, k++)
                nom_fichier[k] = chemin_absolu[j];

            for(k=0; chemin_absolu[j] != '\0'; j++, k++)
                extension[k] = chemin_absolu[j];

        }
    }


    taille_nom = strlen(nom_fichier);

    /* On demande le nombre de copies a l'utilisateur */
    do
    {
        printf("Nombre de copies: ");
        scanf("%d",&nombre_copies);
    }
    while(nombre_copies < 0);

    puts("");

    /* Boucle de duplication du fichier source */
    for(numero_fichier=0; numero_fichier < nombre_copies; numero_fichier++)
    {
        /* On initialise la chaine qui contient le numero du fichier a 0 */
        for(i=0;numero_fichier_caractere[i] != '\0'; i++)
        {
            numero_fichier_caractere[i] = 0;
        }
        /* On efface tous les caracteres se situant apres le nom du fichier */
        for(i=taille_nom;nom_fichier[i] != '\0'; i++)
        {
            nom_fichier[i] = 0;
        }

        /* On convertie le numero entier du fichier en sa representation sous forme de caracteres */
        sprintf(numero_fichier_caractere, "%d", numero_fichier+2);
        /* On concactene le numero du fichier a son nom */
        strcat(nom_fichier, numero_fichier_caractere);
        /* On concactene l'extension du fichier a son nom+numero */
        strcat(nom_fichier, extension);

        /* Ouverture du flux vers le fichier de copie */
        fichier_copie = fopen(nom_fichier, "wb");
        /* Si l'ouverture a echoue on quitte */
        if(fichier_copie==NULL)
        {
            fprintf(stderr, "erreur lors de l'ouverture du fichier copie");
            getchar();
            free(zone_allouee);
            fclose(fichier_source);
            exit(EXIT_FAILURE);
        }
        /* On copie le contenu du fichier source dans le fichier copie */
        while((longueur = fread(zone_allouee,1,TAILLE_BUFFER,fichier_source)) != 0)
        {
            fwrite(zone_allouee,1,longueur,fichier_copie);
        }

        /* On remet le curseur au debut du fichier source */
        rewind(fichier_source);
        /* On ferme le flux du fichier copie */
        fclose(fichier_copie);
    }
    /* Une fois les copies terminees on ferme le flux du fichier source */
    fclose(fichier_source);
    /* On libere la memoire allouee pour la copie du fichier source */
    free(zone_allouee);

}



 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

30 avril 2007 21:15:30 :
Oublie d'un commentaire.
01 mai 2007 17:09:26 :
Amélioration de l'algorithme de copie et modifications mineures.
02 mai 2007 17:42:49 :
Pointeur de type int utilisé pour récupérer l'adresse de l'allocation remplacé en pointeur de type unsigned char.
03 mai 2007 17:55:02 :
oubli d'un free().
17 mai 2007 13:13:52 :
size_t pour le retour de fread().
17 mai 2007 13:38:58 :
Oublie d'un commentaire.

 Sources de la même categorie

Source avec Zip Source avec une capture GENERE BMP par lajouad
Source avec Zip Source avec une capture GETIONNAIRE D'UNE BIBLIOTHÉQUE EN C par benzarabel
FONCTION D'ÉDITION DE FICHIER BIT À BIT [C-MULTIPLATEFORME] par lynxtyle
Source avec Zip Source avec une capture UN GESTIONNAIRE DU FICHIER par benzarabel
Source avec Zip COPIE DE FICHIERS PAR RESEAU LOCAL par cczerty

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture GENERE BMP par lajouad
Source avec Zip Source avec une capture GETIONNAIRE D'UNE BIBLIOTHÉQUE EN C par benzarabel
FONCTION D'ÉDITION DE FICHIER BIT À BIT [C-MULTIPLATEFORME] par lynxtyle
COPIE AVEC SHFILEOPERATION par steph12358
Source avec Zip CODE DE HUFFMAN par Ricky_MacElroy

Commentaires et avis

Commentaire de BruNews le 30/04/2007 21:51:48 administrateur CS

Comment ça "peut-être"...
J'y compte bien car c'est exactement l'exemple à ne pas suivre.
MAJ pour mercredi soir au plus tard sinon je serai contraint d'enlever.

Pour la Xieme fois: on ne lit ni n'écrit octet par octet. Tu aspires un buffer 32 Ko mini et tu replaques le nbr d'octets réellement lus.

Commentaire de 0v3rb1t le 30/04/2007 22:16:30

Ca sera corrigé jeudi au plus tard.

Commentaire de 0v3rb1t le 01/05/2007 17:10:42

Corrigé.

Commentaire de open le 10/06/2007 17:15:52

Le programme fonctionne mais ne copie pas chez moi, jérémy.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Copie de fichier avec barre de progression [ par JMGR ] Salut,Comment peut-on copier un fichier avec une barre de progression ? Retrouver un fichier ??? [ par iljamila ] Lu tlmd !!!je voudrais savoir si c'est possible de retrouver un fichier (.c) à partir d'un fichier (.o) ?Au fait j"ai perdu l'unique copie d'une sour Pb de copie de fichier/taille de structure [ par wannie ] Salut tt le monde. Quelqu'un pourrai tester mon prog est me dire si ça fonctionne. Moi je comprend pas j'ai une copie d'un caractère dans chaque ligne copie automatique de la version précédente [ par plaineR ] Bonjour,Je cherche comment conserver automatiquement la version précédente de mon fichier.Exemple :un utilisateur enregistre un fichier (monfichier.tx Fichier en cours de copie [ par stpvb ] Salut, &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; Je cherche une m&#233;thode pour v&#233;rifier qu'un fichier est bien complet avant de lui faire subir un trai copie de fichier (DLL) [ par mariuscesar ] salut j'ai besoin d'un code en C me permettant de copie une DLL dans un répertoire. urgent svp!! je piannote en C (borland) environnement DOS pour cer Remplacer la copie de fichier de Windows [ par MangaII ] Salut !Quelqu'un sorai-t-il comment on pe remplacer la fonction de copie de fichier sous Windows par un programme maison !Mon but est d'optimiser la c Remplacer la fonction de copie de fichier sous Windows [ par MangaII ] Salut !Quelqu'un sorai-t-il comment on pe remplacer la fonction de copie de fichier sous Windows par un programme maison !Mon but est d'optimiser la c copie de fichier texte : prob fopen [ par Ascagne ] #include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#include &lt;conio.c&gt; //conio.c pour dev-cpp conio.h normalementint main(){char entree,sortie; Copie de fichier en reseau [ par ricky78 ] Bonjour à tous.Je cherche un code en Visual CPP permettant de récupérer le chemin d'un fichier sur un PC en reseau et par la suite le moyen le plus si


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,025 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales