begin process at 2012 05 28 19:35:02
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Linux

 > 

Fichier & Disque

 > 

[Débutant] Déplacer tous les fichiers d'un répertoire A ver B, pb avec rename()


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[Débutant] Déplacer tous les fichiers d'un répertoire A ver B, pb avec rename()

lundi 1 juin 2009 à 20:39:01 | [Débutant] Déplacer tous les fichiers d'un répertoire A ver B, pb avec rename()

evenkil

Bonjour à tous.

L'objectif de mon programme est :
- lister à l'écran tous les fichiers contenu dans un repertoire A
- transférer tous les fichier du répertoire A vers B

Tout fonctionne sauf que j'ai un petit problème avec l'utilisation de la fonction rename, je ne sais pas trop m'en servir malgré avoir parcouru le man et les exemples.

Pourriez vous m'éclairer sur son utilisation ?

PS : auriez vous également une piste pour éviter que le programme n'affiche à l'écran les fichiers "." et ".."


Merci beaucoup pour votre aide



#include <stdio.h>
#include <dirent.h>

 
int main(void){
    
    printf("Bienvenu, ce programme liste et deplace des fichiers\n");
    printf("*********************
**********************************\n");
    while(1){
    DIR * repSource = opendir("./dirA"); // on ouvre le répertoire A
    DIR * repDest = opendir("./dirB"); // on ouvre le répertoire B


        if (repSource != NULL){
            struct dirent * ent;
            printf("Le logiciel a trouvé les fichiers suivants : \n");
            while ((ent = readdir(repSource)) != NULL){
                printf("%s\n", ent->d_name);//on affiche la liste des fichiers
                //rename("./dirA/".ent->d_name, "./dirB/".ent->d_name); // c'est ici que je rencontre mon problème pour déplacer le fichier

            }
            printf("-------On attend 5 seconde pour refaire l'opération-------\n");
            printf("-------------------------------------------------------\n");
        
            closedir(repSource);
            closedir(repDest);
        }
        else {printf("El directorio no existe \n");exit(1);}
        sleep(5);//esperamos 5 segundas antes de buscar de nuevo
    }
     
    return 0;
}

lundi 1 juin 2009 à 23:35:42 | Re : [Débutant] Déplacer tous les fichiers d'un répertoire A ver B, pb avec rename()

TychoBrahe

Salut,

Le C ce n'est pas comme le PHP ou autres truc du genre, le point n'est pas un opérateur de contaténation de chaînes de caractères. En conséquent, ton «"./dirA/".ent->d_name» & co ne compilera pas. Il te faut utiliser strcat ou une de ses amies pour obtenir le chemin (strncat est plus conseillée). Un conseil : au lieux de malloc un tableau tu peux te servir de la taille maximale d'un chemin pour te faire un tableau directement de cette taille. Cette taille est macro-définie dans limits.h (enfin, souvent dans un fichier inclu par ce dernier) et se nomme _POSIX_PATH_MAX , penses juste a define _GNU_SOURCE avant d'inclure limits.h et ce sera bon.

Sinon juste comme ça, c'est assez étrange de faire un programme a moitié en français et a moitié en espagnol. Bref, vive gettext.
lundi 8 juin 2009 à 05:09:03 | Re : [Débutant] Déplacer tous les fichiers d'un répertoire A ver B, pb avec rename()

evenkil

merci pour votre réponse

mais ne fonctionne toujours pas avec

rename(strncat("./dirA/"),(ent->d_name),0), strncat ("./dirB/"),(ent->d_name),0);
lundi 8 juin 2009 à 05:16:16 | Re : [Débutant] Déplacer tous les fichiers d'un répertoire A ver B, pb avec rename()

evenkil

Autre solution qui ne fonctionne pas :

    char archivoA[128];
    char archivoB[128]
...

                archivoA=strcat("./dirA/",ent->d_name);
                archivoB=strcat ("./dirB/",ent->d_name);
                rename(archivoA,archivoB);

merci pour votre aide
lundi 8 juin 2009 à 09:48:03 | Re : [Débutant] Déplacer tous les fichiers d'un répertoire A ver B, pb avec rename()

TychoBrahe

Salut,

Je te conseille très fortement de relire le manuel de strcat. Tu y découvriras que strcat copie le contenu de la seconde chaîne a la suite de la première et qu'en conséquent :
 - la première chaîne ne peux pas être constante vu qu'elle doit être modifiée, or une chaîne en dure entre quotes est une chaîne constante (a moins de compiler avec -fwritable-strings ou -traditional).
 - la première chaîne doit avoir assez de place pour contenir la seconde, ce qui n'est pas le cas de ta chaîne en dur vu qu'elle a juste ce qu'il lui faut en mémoire.

Bref, une solution est, comme je l'ai déjà dit, de se faire un tableau a l'aide de _POSIX_PATH_MAX et de l'utiliser.

Un exemple simpliste :
#define _GNU_SOURCE
#include <limits.h>
#include <limits.h>
#include <string.h>

int     main(void)
{
  char  path[_POSIX_PATH_MAX];

  strcpy(path, "/home/toto/");
  strcat(path, "documents/machin.txt");
  puts(path);
  return 0;
}



Cette discussion est classée dans : répertoire, fichiers, printf, rename, ent


Répondre à ce message

Sujets en rapport avec ce message

fichiers bloqueée [ par montejc ] Bonjour, <p class="MsoNormal" style="MA supprimer tout les fichiers d'un répertoire [ par AoD ] je recherche une fonction qui permet de supprimer tout les fichiers d'un répertoire.merci de vite me répondre comment récupérer des noms de fichiers dans un répertoire particulier? [ par cnrs ] Bonjour,Je débute dans le langage C donc désolé de vous déranger avec mes questions de débutant. Je voulais savoir s'il était possible de récupérer de accéder à tous les fichiers d'un répertoire en C [ par ilyatout ] Bonjour,J'aimerais savoir comment accéder à tous les fichiers d'un répertoire donné, de facon à pouvoir effectuer un traitement sur chaqun d'eux et ce Installation et extraction de fichiers ... [ par MichaelLee ] Salut a tous ... j'airécément terminer un script en Perl et En PHP et je voudrai créer un système d'extraction des fichiers (.php, .pl, .jpg, .gif e Lecture de la liste des fichiers d'un répertoire distant [ par alain34270 ] Bonjour,Je cherche un moyen d'obtenir la liste des fichiers d'un répertoire distant, ainsi que leurs attributs, connaisant l'URL du répertoire. Je sai Liste de fichiers d'un rep [ par kharbout ] Bonjour,Je m'excuse si ma question vous parait bête, je suis débutant on va dire.Je voudrais une aide pour lister la liste des fichiers d'un rep dont Liste des fichiers d'un répertoire distant [ par yerosnimus ] Bonjour,J'ai réussi à faire un programme qui me connecte sur mon serveur FTP.J'aimerai pouvoir affichier la liste des fichiers contenus dans le répert comment lister simplement les fichiers d'un répertoire ? [ par nonocpp ] comment lister simplement les fichiers d'un répertoire ?Merci d avance de vos idées...nonocpp comment lister les fichiers les plus récents d'un répertoire ? [ par nonocpp ] comment lister les fichiers les plus récents d'un répertoire ?Merci d avance de votre réponse...++nono


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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 : 0,562 sec (3)

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