[C] renommer un fichier

Fermé
neolistic Messages postés 93 Date d'inscription samedi 7 mai 2005 Statut Membre Dernière intervention 10 juillet 2007 - 25 oct. 2006 à 00:07
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 26 oct. 2006 à 15:22
Bonjour à tous!

Je veux faire un programme de renommage automatique de fichiers en C sur linux:
Questions surement idiotes:
- Comment renommer un fichier sans le copier?
- Est ce que ce renommage permet un "déplacement"?
- Comment m'y prendre pour trouver tout seul ce genre de fonctionnalités lorsqu'elles ont déjà été implémentés?(pas trop de docs contrairement à java...)

Merci!
A+
A voir également:

8 réponses

mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
25 oct. 2006 à 00:19
Renommer = Déplacer si le fichier reste sur le même device
Pour renommer/déplacer un fichier le plus simple c'est de le faire directement dans une console shell :
mv ancien_nom nouveau_nom

Le C te permet de d'appeler une fonction shell facilement. Tape dans google ou dans une console :
man execvp
man popen

pour voir comment ça marche.

Bon évidemment c'est pas top car ton programme ne pourra marcher que sous linux mais bon... Au fait pourquoi veux tu faire ça en C car ce n'est pas le langage le plus adapté, par exemple comparé à du bash.

Bonne chance
2
neolistic Messages postés 93 Date d'inscription samedi 7 mai 2005 Statut Membre Dernière intervention 10 juillet 2007 6
25 oct. 2006 à 09:49
Je veux faire ca en C car le nom du fichier se construit à partir de données à l'intérieur de celui ci (TAG d'un mp3) et je ne sais pas lire précisément un fichier en bash (et je ne sais meme pas si c'est possible)

J'ai effectivement pensé à l'appel de mv avec exec mais je voudrais vraiment savoir comment on peut le faire au niveau systeme!
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
25 oct. 2006 à 17:30
il existe une fonction rename() en C
int rename (const char*, const char*);
dans "stdio.h"
Si tu veux savoir comment elle est faite, regarde les sources des lib de gcc.
sinon, pour trouver les fonctions quand tu ne les connait pas, il y a deux solutions :
au pif dans le man (man -k rename, man -k move)
ou sur quelques site
https://en.cppreference.com/w/
où d'ailleur la fonction rename est lister (dans "All C functions")
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
25 oct. 2006 à 18:52
Ah je connaissais pas cette focntion ! Très sympathique et nettement plus propre que ma solution ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
neolistic Messages postés 93 Date d'inscription samedi 7 mai 2005 Statut Membre Dernière intervention 10 juillet 2007 6
25 oct. 2006 à 20:46
C'est super!
Merci beaucoup!
Mais je ne suis pas convaincu par le man -k.
Par exemple, je cherchais une fonction pour savoir si un fichier est un répertoire et ben j'ai pas trouvé ni dans man -k ni dans cppreference, au final j'ai trouvé dans le code source de la commande mv: lstat!
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
26 oct. 2006 à 00:20
man mv
man ls

Mais il y a une fonction en C pour tester si un fichier est un répertoire... Je ne me souviens plus du nom par contre.

Bonne chance
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
26 oct. 2006 à 08:48
j'ai pas dit que c'était infaillible le "man -k" mais ça peut aider à trouver une fonction quand on sait ce qu'elle fait. (si la fonction existe)
sinon, quand tu ouvre ton flux de fichier, tu as un FILE*
Ceci est une structure. N'y aurait-il pas un des membre de cette struct qui dirait si c'est un fichier ou non?
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
26 oct. 2006 à 15:22
man fstat
man opendir
man readdir
man closedir


Bonne chance
0