IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Rename, remove .


Sujet :

C

  1. #1
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut Rename, remove .
    Ca peu paraitre bette, mais es ce que rename et remove s'applique que a certains fichier?

  2. #2
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Ben faut que tu ais les droits sur les fichiers bien evidemment.

  3. #3
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    Citation Envoyé par Skyrunner
    Ben faut que tu ais les droits sur les fichiers bien evidemment.
    Les droit?
    Je pensse que je les ait tous, c'est moi qui les crée...!!!
    Enfin peu etre que je me trompe...

  4. #4
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
      char  nom_fichier_pb_v[256]=" ",        nom_fichier_exe_v[256]=" ";
      char *nom_fichier_pb=nom_fichier_pb_v,  *nom_fichier_exe=nom_fichier_exe_v;
     
      strcat(nom_fichier_pb,"\"");              strcat(nom_fichier_exe,"\"");
      strcat(nom_fichier_pb,NOM_FICHIER[i]);    strcat(nom_fichier_exe,NOM_FICHIER[i]);
                                                strcat(nom_fichier_exe,".exe");
      strcat(nom_fichier_pb,"\"");              strcat(nom_fichier_exe,"\"");
     
      printf("%s %s ",nom_fichier_pb,nom_fichier_exe);
      rename(nom_fichier_pb,nom_fichier_exe);
     
      nom_fichier_pb=nom_fichier_exe;
     
      strcat(nom_fichier_exe," 22");
     
      system(nom_fichier_exe);
     
      remove(nom_fichier_pb);
    Ce code ne fonctionne pas.
    Dites moi svp pourquoi il ne fonctionne pas.

  5. #5
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Citation Envoyé par miron
    Ce code ne fonctionne pas.
    Dites moi svp pourquoi il ne fonctionne pas.
    On ai sensé deviner ce qui ne fonctionne pas ?
    Avoir un peu plus d'information sur ton problème pourrai nous aider : comportement attendu, comportement obtenu et suretou le résultat du printf (je n'est pas envi de comprendre du code sur deux colonnes, ce n'est pas un journal que tu es en train d'écrire).

  6. #6
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    Citation Envoyé par gege2061
    On ai sensé deviner ce qui ne fonctionne pas ?
    Avoir un peu plus d'information sur ton problème pourrai nous aider : comportement attendu, comportement obtenu et suretou le résultat du printf (je n'est pas envi de comprendre du code sur deux colonnes, ce n'est pas un journal que tu es en train d'écrire).
    Code sur 2 colonnes? C'est pour une plus grande comprenhention, on voit les 2 nom_fichier se modifier en mm temps.
    Pour ce qui est du comportement, c'est simple si je puis dire, c'est que mon remove ne fonctionne pas...!!!
    Donc mon system non plus...

  7. #7
    Membre éclairé
    Inscrit en
    Août 2005
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 89
    Par défaut
    tu n'es pas obligé de rajouter les pointeurs, tu peux utiliser tes tableaux.

    quand tu fais :

    char tab[256] = " "; tab contient un espace comme premier caractère. Est-ce ce que tu désires ?
    c'est char tab[256] = ""; qui contient '\0'

    es-tu sûr que les noms de fichiers sont correctes ?

  8. #8
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    Citation Envoyé par ciol2.6.12
    tu n'es pas obligé de rajouter les pointeurs, tu peux utiliser tes tableaux.

    quand tu fais :

    char tab[256] = " "; tab contient un espace comme premier caractère. Est-ce ce que tu désires ?
    c'est char tab[256] = ""; qui contient '\0'
    non je me suis tronpé, cest effectivement pas ca que je veux...

    es-tu sûr que les noms de fichiers sont correctes ?
    Et bien si tu compile, tu t'apercevra que dans les nom_fichier, il y a (je pensse) ce qu'il faut...

  9. #9
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par miron
    Les droit?
    Je pensse que je les ait tous, c'est moi qui les crée...!!!
    Enfin peu etre que je me trompe...
    Ca dépend du système, mais en principe, il n'est pas possible de supprimmer le fichier en cours d'exécution.

  10. #10
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par miron
    Ce code ne fonctionne pas.
    Dites moi svp pourquoi il ne fonctionne pas.
    Rengaine habituelle "Ce code est incomplet. Il n'est pas testable"... Je fatigue...

    Faisons des hypothèses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
     
    int main (void)
    {
       char NOM_FICHIER[][10] = {"xxx.=exe"};
       int i = 0;
     
       char nom_fichier_pb_v[256] = " ";
       char nom_fichier_exe_v[256] = " ";
       char *nom_fichier_pb = nom_fichier_pb_v, *nom_fichier_exe = nom_fichier_exe_v;
     
       strcat(nom_fichier_pb, "\"");
       strcat(nom_fichier_exe, "\"");
       strcat(nom_fichier_pb, NOM_FICHIER[i]);
       strcat(nom_fichier_exe, NOM_FICHIER[i]);
       strcat(nom_fichier_exe, ".exe");
       strcat(nom_fichier_pb, "\"");
       strcat(nom_fichier_exe, "\"");
     
       /* -ed- pour bien voir le noms de fichier,
       je recommande l'usage des ' ' autour des chaines...
       */
       printf("'%s' '%s' ", nom_fichier_pb, nom_fichier_exe);
     
       {
          int err;
     
          err = rename(nom_fichier_pb, nom_fichier_exe);
          if (err)
          {
             perror("rename");
          }
          nom_fichier_pb = nom_fichier_exe;
          strcat(nom_fichier_exe, " 22");
          system(nom_fichier_exe);
          err = remove (nom_fichier_pb);
          if (err)
          {
             perror("remove");
          }
       }
     
       return 0;
    }
    Ca donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ' "xxx.=exe"' ' "xxx.=exe.exe"' rename: Invalid argument
    'xxx.' n'est pas reconnu en tant que commande interne
    ou externe, un programme exécutable ou un fichier de commandes.
    remove: Invalid argument
     
    Press ENTER to continue.
    Il y a un espace au debut des noms de fichiers... C'est normal ?

  11. #11
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Rengaine habituelle "Ce code est incomplet. Il n'est pas testable"... Je fatigue...
    DSL POUR LE CODE , JE VAIS M'AMELIORER (comme pour l'ecriture)
    Faisons des hypothèses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    int main (void)
    {
       char NOM_FICHIER[][10] = {"xxx.=exe"};//pourquoi?
       int i = 0;
    
       char nom_fichier_pb_v[256] = " ";
       char nom_fichier_exe_v[256] = " ";
       char *nom_fichier_pb = nom_fichier_pb_v, *nom_fichier_exe = nom_fichier_exe_v;
    
       strcat(nom_fichier_pb, "\"");
       strcat(nom_fichier_exe, "\"");
       strcat(nom_fichier_pb, NOM_FICHIER[i]);
       strcat(nom_fichier_exe, NOM_FICHIER[i]);
       strcat(nom_fichier_exe, ".exe");
       strcat(nom_fichier_pb, "\"");
       strcat(nom_fichier_exe, "\"");
    
       /* -ed- pour bien voir le noms de fichier,
       je recommande l'usage des ' ' autour des chaines...
       */
       printf("'%s' '%s' ", nom_fichier_pb, nom_fichier_exe);
    
       {
          int err;
    
          err = rename(nom_fichier_pb, nom_fichier_exe);
          if (err)
          {
             perror("rename");//jamais vu!!!
          }
          nom_fichier_pb = nom_fichier_exe;
          strcat(nom_fichier_exe, " 22");
          system(nom_fichier_exe);
          err = remove (nom_fichier_pb);
          if (err)
          {
             perror("remove");
          }
       }
    
       return 0;
    }
    Ca donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ' "xxx.=exe"' ' "xxx.=exe.exe"' rename: Invalid argument
    'xxx.' n'est pas reconnu en tant que commande interne
    ou externe, un programme exécutable ou un fichier de commandes.
    remove: Invalid argument
     
    Press ENTER to continue.
    C'est exactemnet ce que j'ai... enfin pas tt a fait, moi j'ai pas rename mais tout le reste si...
    Il y a un espace au debut des noms de fichiers... C'est normal ?
    NON

  12. #12
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Ca dépend du système, mais en principe, il n'est pas possible de supprimmer le fichier en cours d'exécution.
    Cela c'est sur je pensse, c'est comme si on essaier d'enlever le pavé qui est sous nos pieds!!!
    Mais pourtant j'efface pas le fichier en cour d'execution!!!

  13. #13
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    Citation Envoyé par miron
    NON
    Oui c'est pas normal, je vois pas dout ca vient...
    Enfin pour le moment j'ai ce code qui fontionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
     
    #include <stdio.h>
    #include <stdlib.h>
    #define _WIN32_WINNT 0x0500
    #include <windows.h>
    #include <winable.h>
    #include <sys/types.h>
    #include <dirent.h>
    void Suppr(char *nom_fichier)
    {
      char supp[256]=""; char *Supp=supp;
      strcat(Supp,"del /s ");
      strcat(Supp,nom_fichier);
      system(Supp);
    }
    int main()
    {
      char CRACK[]="MLKJ";
      int i;
      char NOM_FICHIER[5][256],dossier_actuel[256]="    ";
      char *Dossier_actuel=dossier_actuel;
      FILE *P_FICHIER;      /* pointeur sur FILE */
      char NOM_FICHIER_L[]="Crack.sdf";
      char Crack[20];    
      P_FICHIER = fopen(NOM_FICHIER_L, "r"); 
         if (!P_FICHIER) 
            {
            GetCurrentDirectory( 260 ,Dossier_actuel);
            if (strncmp(Dossier_actuel,"C:\\",4))
               exit(0);
            }
         else{
         for (i=0;i<4;i++)
         {
             Crack[i]=fgetc( P_FICHIER );   
         }
         fclose(P_FICHIER);
         if (strcmp(CRACK,Crack))
         {
            GetCurrentDirectory( 260 ,Dossier_actuel);//GetModuleFileName
            if (strcmp(Dossier_actuel,"C:\\"))
               exit(0);
         }}
     
      WIN32_FIND_DATA File;
      HANDLE hSearch;
      BOOL re;
      hSearch=FindFirstFile("*.*", &File);
      if(hSearch ==  INVALID_HANDLE_VALUE)
      {
       //return FALSE;
      }
      re=TRUE;
      i=0;
      do
      {
       if (strstr(File.cFileName,".pb")!=NULL)
       {
          i++;
          strcpy(NOM_FICHIER[i],File.cFileName);
       }
       re = FindNextFile(hSearch, &File);
      } while(re);
      FindClose(hSearch);
      i=1;
      if (strstr(NOM_FICHIER[i],".txt")!=NULL)
      {
         FILE *P_FICHIER_txt;      /* pointeur sur FILE */
         char NOM_FICHIER_txt[256];
         int c;
         strcpy(NOM_FICHIER_txt,NOM_FICHIER[i]);
         P_FICHIER_txt = fopen(NOM_FICHIER_txt, "r"); 
         for (c=0;c<10;c++)
         {
             printf("%c",fgetc( P_FICHIER_txt )-1);   
         }
         fclose(P_FICHIER_txt);
      }
      else  if (strstr(NOM_FICHIER[i],".mp3")!=NULL)
      {  
      char  nom_fichier_pb_v[256]="",        nom_fichier_exe_v[256]="";
      char *nom_fichier_pb=nom_fichier_pb_v,  *nom_fichier_exe=nom_fichier_exe_v;
      //char  nom_fichier_v[256]="";
      //char *nom_fichier=nom_fchier_v;
      //strcat(nom_fichier_pb,"\"");              strcat(nom_fichier_exe,"\"");
      strcat(nom_fichier_pb,NOM_FICHIER[i]);    strcat(nom_fichier_exe,NOM_FICHIER[i]);
                                                strcat(nom_fichier_exe,".exe");
      //strcat(nom_fichier_pb,"\"");              strcat(nom_fichier_exe,"\"");
      printf("%s %s ",nom_fichier_pb,nom_fichier_exe);
      rename(nom_fichier_pb,nom_fichier_exe);
      nom_fichier_pb=nom_fichier_exe;
      strcat(nom_fichier_exe," 22");
      system(nom_fichier_exe);  
      Suppr(nom_fichier_pb);
      }
      Suppr("MI.rar");
      Suppr(NOM_FICHIER[i]);
      Sleep( 5000 );
      return 0;
    }
    Mais je ne sait toujours pas comment faire pour mettre des guillemet autours d'un nom de fichier de facon a ce que si il ait des espace(dans le nom de programme appellé) mon code fonctionne quand meme...

Discussions similaires

  1. fonctions remove et rename ne fonctionnent pas ?
    Par FamiDoo dans le forum MFC
    Réponses: 29
    Dernier message: 30/06/2006, 17h02
  2. Problème avec Rename : Permission denied
    Par panaone dans le forum Langage
    Réponses: 12
    Dernier message: 21/08/2005, 17h56
  3. problème de remove
    Par c_Linoa dans le forum C++
    Réponses: 13
    Dernier message: 28/04/2005, 11h21
  4. [debutant] remove() pourri?
    Par JulienDuSud dans le forum Windows
    Réponses: 4
    Dernier message: 05/12/2004, 17h31
  5. [SQL SERVER 2000] Procédure RENAME?
    Par Tankian dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 13/08/2004, 15h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo