Comment deplacer un fichier en C ?
Résolu
youscoul
Messages postés
125
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Suis sous LINUX.
Voici mon probleme et je sollicte vos aides.
J'ai un fichier dans un depot: DEPOT_SOURCE nommé mon_fichier1.
Je voudrai deplacer ce fichier dans un autre depot: DEPOT_DEST sous le même nom.Et biensûr, je veux pas le garder dans depot source.
On m'a parlé de la fonction
par exemple:
dejà j'ai pas de resultat en faisant ça. Merci.
Suis sous LINUX.
Voici mon probleme et je sollicte vos aides.
J'ai un fichier dans un depot: DEPOT_SOURCE nommé mon_fichier1.
Je voudrai deplacer ce fichier dans un autre depot: DEPOT_DEST sous le même nom.Et biensûr, je veux pas le garder dans depot source.
On m'a parlé de la fonction
move()qui n'est pas portable. Aussi certains parlent de la fonction
rename(). Disons j'utilise rename mais comment cela entrainera t il le deplacement de mon fichier.
par exemple:
rename("DEPOT_SOURCE/mon_fichier1", "DEPOT_DEST/mon_fichier1");
dejà j'ai pas de resultat en faisant ça. Merci.
A voir également:
- Comment deplacer un fichier en C ?
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier bin - Guide
- Déplacer colonne excel - Guide
- Fichier rar - Guide
3 réponses
Bonjour,
En C standard, il n'y a pas de fonction de déplacement, ni de copie.
Il va donc falloir la créer. Le principe est simple :
Tu ouvres le fichier à l'endroit de destination en mode write.
Tu ouvres le fichier source en mode read.
Et tu parcours avec une bête boucle while fgets pour recopier dans le fichier de destination.
Et tu n'oublies pas de supprimer le fichier source.
Si tu as besoin d'aide pour la mise en place de la fonction, n'hésite pas à demander.
Cdlt,
En C standard, il n'y a pas de fonction de déplacement, ni de copie.
Il va donc falloir la créer. Le principe est simple :
Tu ouvres le fichier à l'endroit de destination en mode write.
Tu ouvres le fichier source en mode read.
Et tu parcours avec une bête boucle while fgets pour recopier dans le fichier de destination.
Et tu n'oublies pas de supprimer le fichier source.
Si tu as besoin d'aide pour la mise en place de la fonction, n'hésite pas à demander.
Cdlt,
Bonjour fiddy,
J'ai des fichiers de 150 Go, j'ai dejà fait cette methode, goulo d'etranglement pour mon programme en accès disque tout le temps pour ça.
Le plus simple c'est de renommer le fichier, je crois ke ça peut resoudre.
Merci pour ton aide. Sinon pourquoi on ne pense pas à ajouter ces fonctions de base au standard C. Vraiment, je pensais pas ke les programmeurs etaient aussi paresseux juskà ce point.
J'ai des fichiers de 150 Go, j'ai dejà fait cette methode, goulo d'etranglement pour mon programme en accès disque tout le temps pour ça.
Le plus simple c'est de renommer le fichier, je crois ke ça peut resoudre.
Merci pour ton aide. Sinon pourquoi on ne pense pas à ajouter ces fonctions de base au standard C. Vraiment, je pensais pas ke les programmeurs etaient aussi paresseux juskà ce point.
rename() est la fonction standard pour déplacer un fichier, du moins sur le même volume. Dans un précédent message, nous étions tombé daccord sur le fait que rename() était la meilleur solution et la plus propre pour déplacer un fichier (je te laisse le soin de trouver le message).
En revanche, je ne suis pas d'accord avec fiddy sur la standardisation. Voilà ce que j'ai trouvé :
[...] the C standard library, which is specified by the ISO and ANSI C standards and comes with every C implementation [...] ( https://en.wikipedia.org/wiki/C_%28programming_language%29#Libraries ), sachant que rename en fait parti dans stdio.h ( https://en.wikipedia.org/wiki/Stdio.h )
au sujet de ta remarque sur la paresse des programmeurs, il ne faut pas tout confondre : le bibliothèques du standard, celles de l'OS et celles que l'on peut trouver un peu partout. Sur Linux, les bibliothèques C contiennent bien d'autres options/fonctions par rapport au standard. Mais comme elles ne font pas partie du standard, il vaut mieux les éviter pour conserver la portabilité.
En revanche, je ne suis pas d'accord avec fiddy sur la standardisation. Voilà ce que j'ai trouvé :
[...] the C standard library, which is specified by the ISO and ANSI C standards and comes with every C implementation [...] ( https://en.wikipedia.org/wiki/C_%28programming_language%29#Libraries ), sachant que rename en fait parti dans stdio.h ( https://en.wikipedia.org/wiki/Stdio.h )
au sujet de ta remarque sur la paresse des programmeurs, il ne faut pas tout confondre : le bibliothèques du standard, celles de l'OS et celles que l'on peut trouver un peu partout. Sur Linux, les bibliothèques C contiennent bien d'autres options/fonctions par rapport au standard. Mais comme elles ne font pas partie du standard, il vaut mieux les éviter pour conserver la portabilité.
Merci,
Mon problème est resolu grâce à la fonction rename().
En effet, j'avais pas les droits d'ecrire dans mon DEPOT_DEST.
Donc sous linux, en mettant mkdir( depot, 0777) c'est ok.
Pour windows, il suffit de faire proprietés du dossier et decocher la case "Lecture seule".
A conseiller, rename est bien la fonction la plus simple pour deplacer un ficher en c au lieu de faire des fread et fwrite qui sont coutées en accès disque.Merci encore à fiddy et Char Snipeur.
Mon problème est resolu grâce à la fonction rename().
En effet, j'avais pas les droits d'ecrire dans mon DEPOT_DEST.
Donc sous linux, en mettant mkdir( depot, 0777) c'est ok.
Pour windows, il suffit de faire proprietés du dossier et decocher la case "Lecture seule".
A conseiller, rename est bien la fonction la plus simple pour deplacer un ficher en c au lieu de faire des fread et fwrite qui sont coutées en accès disque.Merci encore à fiddy et Char Snipeur.
" Ingorant ne veux pas dire qu'on ne connait rien, mais qu'on refuse de donner raison aux autres si on se rend compte"