Comment deplacer un fichier en C ?
Résolu/Fermé
youscoul
Messages postés
125
Date d'inscription
dimanche 10 août 2008
Statut
Membre
Dernière intervention
7 janvier 2013
-
29 juin 2010 à 23:52
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 30 juin 2010 à 19:36
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 30 juin 2010 à 19:36
A voir également:
- Comment deplacer un fichier en C ?
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier host - Guide
- Fichier iso - Guide
3 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 835
30 juin 2010 à 00:21
30 juin 2010 à 00:21
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,
youscoul
Messages postés
125
Date d'inscription
dimanche 10 août 2008
Statut
Membre
Dernière intervention
7 janvier 2013
4
30 juin 2010 à 00:39
30 juin 2010 à 00:39
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.
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
30 juin 2010 à 08:26
30 juin 2010 à 08:26
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é.
youscoul
Messages postés
125
Date d'inscription
dimanche 10 août 2008
Statut
Membre
Dernière intervention
7 janvier 2013
4
30 juin 2010 à 14:30
30 juin 2010 à 14:30
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"
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 835
30 juin 2010 à 19:36
30 juin 2010 à 19:36
Shame on me. J'ai omis que rename() permettait le déplacement. Mais oui bien sûr, rename() est standard aucun doute à ce sujet.
Néanmoins, il n'existe pas de fonction standard de copie.
Néanmoins, il n'existe pas de fonction standard de copie.