Je voudrais savoir si dans un opendir, il faut passer simplement le nom du répertoire à ouvrir ou faut il lui passer le chemin+nom du repertoire?
Merci
Je voudrais savoir si dans un opendir, il faut passer simplement le nom du répertoire à ouvrir ou faut il lui passer le chemin+nom du repertoire?
Merci
Envoyé par theshark85
Il faut tout lui donner par exemple
opendir("/usr/share/doc");
Ben j'ai pas du comprendre un truc.
Je veux tester si le répertoire existe, si c'est le cas, j'en cree un nouveau avec un autre nom, et s'il existe pas on le cree.
Mon probléme, la boucle de recherche ne fonctionne pas. Si j'ai des déjà le répertoire de crée, elle le réecrase quand meme.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 DIR *dirlog; /*recherche d'existance*/ for(i=0;dirlog!=NULL;i++) { sprintf(PATH_LOG,"%s/LOGv%d_%s",trimCRLF(PATH_MAIN),i,argv[2]); dirlog=opendir(PATH_LOG); i++; } /*test bidon*/ if(dirlog!=NULL) printf("Fichier existant\n"); else printf("Fichier inexistant\n"); /*Creation du repertoire*/ sprintf(PATH_LOG,"mkdir \"%s/LOGv%d_%s",trimCRLF(PATH_MAIN),i,argv[2]); system(PATH_LOG); /*creation du chemin du log*/ sprintf(PATH_LOG,"%s/LOGv%d_%s",trimCRLF(PATH_MAIN),i,argv[2]); printf("PATH_LOG =>%s\n",PATH_LOG);
Ca, pour commencer, c'est un FOR génétiquement modifié... soit tu fais un FOR et dans ce tu ne géres pas le compteur de boucle dans le bloc d'instructions.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 /*recherche d'existance*/ for(i=0;dirlog!=NULL;i++) { sprintf(PATH_LOG,"%s/LOGv%d_%s",trimCRLF(PATH_MAIN),i,argv[2]); dirlog=opendir(PATH_LOG); i++; }
Soit tu fais un "while" et dans ce cas tu peux gérer un compteur.
ici i est incrémenté 2 fois ... for(; ;i++)
et i++;}
... ensuite dans le IF, la 2ème condition est la condition de sortie. Ici, ton if ne sort que ... quand
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 dirlog= null ....
Du coup dans "test bidon"
est toujours faux, et tu passes toujours dans le ELSE... donc tu écrases tout le temps.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 if(dirlog!=NULL)
Mais son des test bidon, qui ne doivent avoir aucune utilite que pour savoir ce que ça fait pour moi meme.
Ce que je veux, c'ets que quand ça de la recherche j'ai le nouveau i, qui est la nouvelle evrsion du repertoire.
J'avais pas vu en postant que j'avais oublie leCar j'ai aussi essayé avec un do while, et pareil, meme comportement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part i++;
Et sinon pour mon for, je sais qu'il etai genetiquement modifie. Mais bon ça fait un petit moment que je me prend la tete dessus, et doit y avoir un truc qui m'échappe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 DIR *dirlog; i=0; do { sprintf(PATH_LOG,"%s/LOGv%d_%s",trimCRLF(PATH_MAIN),i,argv[2]); dirlog=opendir(PATH_LOG); i++; } while(dirlog!=NULL);![]()
Sans savoir ce qu'il y a dans PATH_MAIN, c'est difficile de donner un diagnostic. Fait un printf de ta commande mkdir et regarde si la commande colle.Mon probléme, la boucle de recherche ne fonctionne pas. Si j'ai des déjà le répertoire de crée, elle le réecrase quand meme.
Sinon, tu va avoir un problème d'indice puisque ta boucle incrémente i après avoir tester un répertoire donc lorsque tu sors de la boucle, i a été incrémenté une fois de trop...
Il faudrait faire:
Jc
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 DIR *dirlog; i=-1; do { i++; sprintf(PATH_LOG,"%s/LOGv%d_%s",trimCRLF(PATH_MAIN),i,argv[2]); dirlog=opendir(PATH_LOG); } while(dirlog!=NULL);
Merci mon probléme étant que mon i++; n'était pas bien placé. Comme l'avais dit il y avait un truc qui m'échappait![]()
Voici mon code résolu:
PATH_MAIN étant le chemin principal
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 DIR *dirlog; i=-1; do { i++; sprintf(PATH_LOG,"%s/LOGv%d_%s",trimCRLF(PATH_MAIN),i,argv[2]); dirlog=opendir(PATH_LOG); } while(dirlog!=NULL); sprintf(PATH_LOG,"mkdir \"%s/LOGv%d_%s",trimCRLF(PATH_MAIN),i,argv[2]); system(PATH_LOG); sprintf(PATH_LOG,"%s/LOGv%d_%s",trimCRLF(PATH_MAIN),i,argv[2]); printf("PATH_LOG =>%s\n",PATH_LOG);
PATH_LOG le chemin du repertoire
Partager