Deplacer un fichier dans un repertoire en langage c sur linux

Résolu/Fermé
usher105 Messages postés 8 Date d'inscription samedi 30 novembre 2013 Statut Membre Dernière intervention 19 mars 2016 - Modifié par jipicy le 27/05/2014 à 10:40
usher105 Messages postés 8 Date d'inscription samedi 30 novembre 2013 Statut Membre Dernière intervention 19 mars 2016 - 28 mai 2014 à 00:32
Bonjour à tous, s'il vous plait j'essaye depuis 2 jours à deplacer un fichier dans un dossier avec la fonction rename en sur ubuntu sans succès. voila ma fonction:


void deplace(char* nom_fichier, char* nom_dossier)
{
   FILE *fichier = NULL;
   DIR  *repertoire = NULL;
   fichier = fopen(nom_fichier,"r");
   if((fichier == NULL)&&(errno == ENOENT))
   {
    printf("le fichier %s n\'existe pas\n",nom_fichier);
    
   }
   else
   {
 repertoire = opendir(nom_dossier);
 if((repertoire == NULL)&&(errno == ENOENT))
 {
    printf("Le repertoire %s n\'existe pas\n",nom_dossier);
 }
 else
 {
    fclose(fichier);
    closedir(repertoire);

    //Deplacement du fichier dans le repertoire
    if(rename(nom_fichier, nom_dossier) == 0)
  printf("fichier %s deplace avec succe\n",nom_fichier);
           else
  printf("Echec de deplacement\n");
    
 }
   }
}


Sa m'affiche a chaque fois echec de deplacement.
Merci de m'aider
A voir également:

1 réponse

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
27 mai 2014 à 09:57
Ben tu renommes ton fichier en répertoire...
Il faut indiquer le nom du fichier source et la destination : rename(source, destination).
Donc grosso modo, il faut que tu mettes en 2nd argument : nom_dossier/nom_fichier.

Tu peux te créer une variable suffisamment grande, copier nom_dossier dedans avec strcpy() puis concaténer avec nom_fichier (strcat()).
Pense bien à vérifier qu'il y a bien le '/'.

Cdlt,
4
usher105 Messages postés 8 Date d'inscription samedi 30 novembre 2013 Statut Membre Dernière intervention 19 mars 2016
28 mai 2014 à 00:32
merci fiddy probleme resolu
0