Partage
  • Partager sur Facebook
  • Partager sur Twitter

Renommer un fichier

rename marche pas !

Sujet résolu
    15 avril 2006 à 16:15:51

    Bonjour les zéros, j'ai encore des problemes avec les fichiers !
    Quand je fais ca :
    FILE *fichier = NULL;
    fichier = fopen("test.php","w+");
    rename("test.php","test.txt");
    fclose(fichier);

    Le fichier .php est bien crée mais il n'est pas renommé en .txt
    • Partager sur Facebook
    • Partager sur Twitter
      15 avril 2006 à 16:17:03

      Ferme le fichier avant de le renommer.
      • Partager sur Facebook
      • Partager sur Twitter
        15 avril 2006 à 16:26:35

        Il ne faut pas ouvrir un fichier pour le renommer. Je t'assure que ton code fonctionne, mais tu n'as besoin que d'une ligne : celle du rename !
        • Partager sur Facebook
        • Partager sur Twitter

        If you'd like to join us, read "How do we work at OpenClassrooms"! :)

          15 avril 2006 à 16:36:42

          Ca je le savais , j'ai juste crée un fichier pour ensuite le modifier ! Mais même qu'avaec le rename ca ne marche pas !
          • Partager sur Facebook
          • Partager sur Twitter
            15 avril 2006 à 16:44:05

            Citation : NarTy

            Ca je le savais , j'ai juste crée un fichier pour ensuite le modifier ! Mais même qu'avaec le rename ca ne marche pas !


            EDIT
            rename() ne fonctionne que si la destination n'existe pas. Il faut donc detruire le fichier avant :

            Ceci fonctionne parfaitement sous XP :

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

            int main (void)
            {
               FILE *fichier = NULL;
               fichier = fopen("test.php", "w+");
               fclose(fichier);
               remove("test.txt");
               rename("test.php", "test.txt");
               system("dir test.*");
               return 0;
            }


            Le volume dans le lecteur C s'appelle 427409
            Le numéro de série du volume est 8873-ADFB

            Répertoire de C:\dev\forums\OP

            03/12/2005 11:14 21 test
            13/12/2005 20:33 55 test.itm
            15/04/2006 16:51 0 test.txt
            3 fichier(s) 76 octets
            0 Rép(s) 143 883 751 424 octets libres

            Tu peux ajouter un test du retour de rename() si ça ne fonctionne pas...
            • Partager sur Facebook
            • Partager sur Twitter
            Music only !
              15 avril 2006 à 16:48:45

              Oui merci j'ai testé ca marche , cependant j'ai fais une fonction :
              void FICHIER_renameFichier(char* old,char* nom)
              {
                 int exist = AUTRE_fileExist(old);
                 if(exist == 1)
                 {
                    printf("Ce fichier n'existe pas\n");
                 }
                 else
                 {
                    int verif_rename = rename(old,nom);
                    if(verif_rename != 0) printf("La renomination n'a pas fonctionne !\n");
                 }

              Or , même si je prends le même parametre qu'avec rename , cela m'affiche :
              La renomination n'a pas fonctionne !

              Ma fonction est-elle incorrecte ?
              • Partager sur Facebook
              • Partager sur Twitter
                15 avril 2006 à 16:52:20

                Citation : NarTy

                Oui merci j'ai testé ca marche


                Euh, attention. J'ai modifié mon post.
                • Partager sur Facebook
                • Partager sur Twitter
                Music only !
                  15 avril 2006 à 16:58:13

                  non même en faisant remove() ca ne fonctionne pas !
                  • Partager sur Facebook
                  • Partager sur Twitter
                    15 avril 2006 à 16:59:46

                    Citation : NarTy

                    non même en faisant remove() ca ne fonctionne pas !


                    Peux-tu montrer la sortie de mon programme sur ta machine ?
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Music only !
                      15 avril 2006 à 18:44:38

                      Comme tu me le demandes :
                      Le volume dans le lecteur C s'appelle Disque Local
                      Le numéro de série du volume est 240F-475C

                      Répertoire de C:\Mes documents\Cpp

                      15/04/2006 18:45 0 test.txt
                      1 fichier(s) 0 octets
                      0 Rép(s) 25 435 751 443 octets libres
                      • Partager sur Facebook
                      • Partager sur Twitter
                        15 avril 2006 à 18:47:49

                        Citation : NarTy

                        Comme tu me le demandes :


                        15/04/2006 18:45 0 test.txt
                        1 fichier(s) 0 octets

                        Il a donc été crée et renommé à 18:45. Tout va bien.

                        Quel est le problème ? De transposer ce code dans le tiens ?
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Music only !
                          15 avril 2006 à 18:52:28

                          bah regarde ma fonction :
                          void FICHIER_renameFichier(char* old,char* nom)
                          {
                             int exist = AUTRE_fileExist(old);
                             if(exist == 1)
                             {
                                printf("Ce fichier n'existe pas\n");
                             }
                             else
                             {
                                remove(old);
                                int verif_rename = rename(old,nom);
                                if(verif_rename != 0) printf("La renomination n'a pas fonctionne !\n");
                             }
                          }

                          Normalement , je devrai l'appeller ainsi non ?:
                          FICHIER_renameFichier("test.txt","renomme.txt");

                          Cependant , ca ne fonctionne pas , ca m'affiche La renomination n'a pas fonctionne (je sais aps tellement sic a ce dit , mais bon .. )
                          Bref en fait le rename merde !
                          • Partager sur Facebook
                          • Partager sur Twitter
                            15 avril 2006 à 19:02:38

                            Citation : NarTy

                            Bref en fait le rename merde !


                            Je t'ai prouvé que non.

                            Ca fait plusieurs fois que quand quelque chose ne va pas, tu accuses les fonctions, le système, le langage, le pape. Et toi, tu crois que tu ne fais jamais d'erreurs ?

                            Peux tu donner le code de AUTRE_fileExist() ?
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Music only !
                              15 avril 2006 à 19:05:22

                              int AUTRE_fileExist(const char* nom)
                              {
                                 FILE* fichier = NULL;
                                 fichier = fopen(nom,"r");
                                 if(fichier == NULL)
                                 {
                                    return 1;
                                 }
                                 else
                                 {
                                              fclose(fichier);
                                   return 0;
                                 }
                              }

                              EDIT :

                              Citation : ed

                              Ca fait plusieurs fois que quand quelque chose ne va pas, tu accuses les fonctions, le système, le langage, le pape. Et toi, tu crois que tu ne fais jamais d'erreurs ?


                              Je me suis sans doute mal exprimé ! Je voulais juste dire que comme la fonction rename renvoyait autre chose que 0 , c'est ca qui n'allait pas !
                              • Partager sur Facebook
                              • Partager sur Twitter
                                15 avril 2006 à 19:43:07

                                Citation : NarTy

                                <...>


                                Ta logique inversée est déroutante...
                                Tu n'effaçais pas le bon fichier

                                Ceci fonctionne correctement :

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

                                static int fileExist(const char* nom)
                                {
                                   int exist;
                                   FILE* fichier = fopen(nom, "r");
                                   if (fichier == NULL)
                                   {
                                      exist = 0;
                                   }
                                   else
                                   {
                                      fclose(fichier);
                                      exist = 1;
                                   }
                                   return exist;
                                }

                                static void FICHIER_renameFichier(char const * old, char const * new)
                                {
                                   int exist = fileExist(old);
                                   if (!exist)
                                   {
                                      printf("Le fichier '%s' n'existe pas\n", old);
                                   }
                                   else
                                   {
                                      int err = remove (new);
                                      if (err == -1)
                                      {
                                         perror (old);
                                      }

                                      err = rename(old, new);

                                      if (err == -1)
                                      {
                                         printf("Le renommage n'a pas fonctionne !\n");
                                         perror (old);
                                      }
                                   }
                                }

                                int main (void)
                                {
                                   FICHIER_renameFichier ("fichier.txt", "renomme.txt");
                                   system ("dir *.txt");
                                   return 0;
                                }

                                Evidemment, ça ne fonctionne qu'une fois...
                                • Partager sur Facebook
                                • Partager sur Twitter
                                Music only !
                                  15 avril 2006 à 20:26:52

                                  encore une fois merci manu ^^ !
                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  Renommer 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