Partage
  • Partager sur Facebook
  • Partager sur Twitter

Copier un fichier

Sujet résolu
    7 juin 2006 à 20:32:58

    Encore moi,

    Voilà j'ai, un jour, essayé de créer un programme pour copier des fichiers. J'y arrive mais seulement pour le texte brut. Impossible de copier un .exe o_O , c'est assez énervant!!! :colere2:

    Voilà mon code :
    #include <stdio.h>
    #include <stdlib.h>

    #define TAILLE_MAX 10000

    int main(int argc, char *argv[])
    {
        char copie[TAILLE_MAX] = "";
        FILE* fichier1 = NULL;
        FILE* fichier2 = NULL;

        fichier1 = fopen("test.exe", "r");
        fichier2 = fopen("data\\test.exe", "w+");

        if (fichier1 != NULL)
        {
            while (fgets(copie, TAILLE_MAX, fichier1) != NULL)
            {
                fprintf(fichier2, "%s", copie);
            }

            fclose(fichier1);
            fclose(fichier2);
        }

        return EXIT_SUCCESS;
    }


    Quelqu'un peut-il m'aider à corriger mon code please?
    • Partager sur Facebook
    • Partager sur Twitter
      7 juin 2006 à 21:13:53

      C'est dû au fait que ton exe c'est as des lignes de code, c'est du binaire... Ouvre ton exe en mode binaire et recopie-le bit à bit, et ça devrais déjà mieux marcher. Enfin, je suis pas sûr, mais tu perds rien à essayer...

      Bon courage.
      • Partager sur Facebook
      • Partager sur Twitter
        7 juin 2006 à 21:18:52

        Moi j'ai fais comme a dit nico, ainsi j'arrive a recopier des images, des sons... mais étrangement les .exe ca marche pas, ca affiche "application window non valide".

        Bonne chance a toi donc pour résoudre ton problème!
        • Partager sur Facebook
        • Partager sur Twitter
          7 juin 2006 à 21:19:33

          Salut :)

          Bon, je connais pas la méthode qu'il faut utiliser, mais j'ai un peu corrigé ton code.

          Tu peux essayer d'ouvrir et de copier tes fichiers en binaire.

          /* Je ne pense pas que ce soit la methode appropriee pour copier des
             executables, je n'y connais rien sur ce point, desole. */


          #include <stdio.h>
          /* pas besoin, tu ne l'utilises pas.
             #include <stdlib.h> */


          /* un malloc, ca serait mieux que definir une taille qui peut depasser.  */
          #define TAILLE_MAX 10000
           
          /* arguments inutilises.
          int main(int argc, char *argv[]) */

          int main (void)
          {
              char copie[TAILLE_MAX] = "";
              FILE* fichier1 = NULL;
              FILE* fichier2 = NULL;
           
              fichier1 = fopen("test.exe", "r");

          /*  jeu dangereux, tu ne teste pas l'ouverture de fichier2. */
              fichier2 = fopen("data\\test.exe", "w+");
           
              if (fichier1 != NULL)
              {
                  while (fgets(copie, TAILLE_MAX, fichier1) != NULL)
                  {
                      fprintf(fichier2, "%s", copie);
                  }
           
                  fclose(fichier1);
                  fclose(fichier2);
              }
           
              return 0;
          }



          Kr00pS
          • Partager sur Facebook
          • Partager sur Twitter
            7 juin 2006 à 21:40:39

            Ca y est j'ai relu un peu les cours j'ai modifié mon code source et maintenant ca marche!!!!! :D

            #include <stdio.h>
            #include <stdlib.h>

            int main(int argc, char *argv[])
            {
                int caractereActuel = 0;
                FILE* fichier1 = NULL; // Le fichier à copier.
                FILE* fichier2 = NULL; // Le fichier qui ensuite est copié.

                fichier1 = fopen("test.exe", "rb"); // Il faut mettre le mode binaire!!!
                fichier2 = fopen("data\\test.exe", "wb+");

                if (fichier1 != NULL)
                {
                    do // Boucle qui copie caractère par caractère.
                    {
                        caractereActuel = fgetc(fichier1);
                        fprintf(fichier2, "%c", caractereActuel);
                    } while (caractereActuel != EOF);

                    fclose(fichier1); // Fermeture des fichiers.
                    fclose(fichier2);
                }

                return EXIT_SUCCESS;
            }


            Merci à vous, depuis le temps que je cherchais comment faire!!!!!
            • Partager sur Facebook
            • Partager sur Twitter

            Copier un fichier

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown