Auto-dupliquer le programme courant

4/5 (7 avis)

Snippet vu 4 489 fois - Téléchargée 32 fois

Contenu du snippet

Voici un code qui permet de dupliquer le programme en cours d'éxécution, à vous de trouver son utilité ;)

Source / Exemple :


#include <stdio.h>

#define FILE_DEST "c:\\test.exe"

int fexist(const char *filename)
{
FILE *fichier = NULL;

fichier = fopen(filename, "rb");
if (fichier == NULL)
    return 0;
else
{
    fclose(fichier);
    return 1;
}
}

int main(int argc, char *argv[])
{
    if(fexist(FILE_DEST)==0)
    {
        int c;
        FILE *fin, *fout;
        fin = fopen(argv[0], "rb");
        fout = fopen(FILE_DEST, "wb");
        while((c=getc(fin)) != EOF)
             putc(c, fout);
        fclose(fin);
        fclose(fout);
    } 
    return 0;
}

Conclusion :


le petit truc spécial de ce programme est le mode rb et wb pour la copie et écriture qui spécifie au système qu'il s'agit d'un fichier binaire.
P.S.: je pense que ça se passe de commentaire vu que les fonctions classiques sont utilisées mais si vous le désirer, je peux en mettre pour détailler aux débutants...

A voir également

Ajouter un commentaire Commentaires
cs_djl
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
7
10 mai 2004 à 21:51
c'est plus rapide avec fread fwrite, dans k&r ca montre surtout des exemple de code condensé
BruNews
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
19
10 mai 2004 à 21:44
sur win32: GetFileAttributes ou FindFirstFile.
A voir pour les autres systemes.
kod32
Messages postés
46
Date d'inscription
mercredi 5 mai 2004
Statut
Membre
Dernière intervention
13 novembre 2004

10 mai 2004 à 21:32
C'est vrai, mais c'est pour controler que la copie puisse réussir, t'aurrais pas une autre méthode de vérification de l'existence du fichier ?

Merci
BruNews
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
19
10 mai 2004 à 21:31
pas parce qu'on utilise un buffer qu'on a besoin de savoir la taille de l'exe, suffit de boucler tant qu'il reste des octets.
kod32
Messages postés
46
Date d'inscription
mercredi 5 mai 2004
Statut
Membre
Dernière intervention
13 novembre 2004

10 mai 2004 à 21:29
je me suis inspiré du livre "Le langage C" par Kernighan et Ritchie (référence inconstestée ;)).
Je pense que c'est mieux char par char, ça évite d'utiliser un buffer et comme ça de ne pas avoir besoin de controler la taille de l'exe...
Afficher les 7 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.