Bonjour,
je veux renommer un fichier par une chaine de caractère stoquée dans un tableau:
par exemple
char nom[20];
mon fichier est t.txt et
je fé rename("t.txt", nom);
ca marche pas!!
merci
Version imprimable
Bonjour,
je veux renommer un fichier par une chaine de caractère stoquée dans un tableau:
par exemple
char nom[20];
mon fichier est t.txt et
je fé rename("t.txt", nom);
ca marche pas!!
merci
probablement parceque le working directory de ton programme n'est pas le répertoire dans lequel se trouve ton fichier "t.txt".
Je te conseille d'ajouter le chemin complet dans ton rename (et au passage de réserver plus de place pour ton tableau de caractères car 20 octets, c'est loin d'être assez pour éviter tous les futurs bugs :?)
Après, si ce n'est pas un problème de path, cela peut aussi être un problème de droits d'accès sur le répertoire.
Il peut y avoir plusieurs raison (la plus courante est celle mentionnées par ram_0000).
Pour savoir qu'elle est l'erreur, (si rename() retourne -1), examines la valeur de errno.
j'ai essayer tout ce que vous avez mentionner mais tj pas de solution
rename me retourne -1.Merci
rename ne marche pas dans ce cas.est ce qu'il uy a une autre fonction qui permet de renommer les fichiers en langage c.Merci
certains fois il m'affiche 17 et d'autres 22.merci
#define EEXIST 17 /* File exists */
#define EINVAL 22 /* Invalid argument */
Un peu de lecture : man de rename()
Avant d'utiliser une fonction, il est quand même préférable de lire sa doc !!! :aie:
Extrait :
ENOTEMPTY ou EEXIST newpath est un répertoire non vide (contient autre chose que "." et "..").
EINVAL Une partie du nouveau chemin contient en préfixe l'ancien chemin, ou plus généralement, un répertoire ne peut pas être déplacé dans ses propres sous-répertoires.
de toute facon ca va pas marcher avec la fonction rename car elle utlise deux argument constant?il faut une autre fonction.
8O8O8O8O8O8O8O8O
rename prends 2 chaines de caractères : fichier à renomer / déplacer, nouveau nom/emplacement.
Le caractère constant des arguments n'a vraiment rien a voir !
Cela signifie que la fonction ne modifie pas les chaines passées en argument !
Un conseil : prend un bon bouquin/tuto sur le C et la lib C + un bon tuto sur les concepts de la programmation...
Il n'existe aucune autre fonction de la lib C pour faire ce que tu veux...
Mais puisque tu ne veux rien écouter et ne pas prendre en compte ce qu'on te dis, tu risques de galérer longtemps sur ton problème !
si tu n'initialise pas la variable nom avec le nouveau nom de fichier, ca ne risque pas de marcher !Citation:
char nom[20];
mon fichier est t.txt et
je fé rename("t.txt", nom);
ca marche pas!
dans google : code errno 17. 339000 réponses semblent dire que le fichier existe. Il n'est pas possible de renommer un fichier si le nouveau nom est déjà utilisé par un fichier existant.
dans google : code errno 22. 317000 réponses s'accordent à dire que c'est un argument invalide.
Au passage, j'ai trouvé cela : la signification des codes errno en fonction des différentes plateformes : http://www.ioplex.com/~miallen/errcmp.html