Fonction stat
Fermé
Jofroy
Messages postés
82
Date d'inscription
mercredi 30 juin 2010
Statut
Membre
Dernière intervention
10 octobre 2017
-
Modifié le 19 avril 2017 à 02:04
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 - 21 avril 2017 à 13:17
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 - 21 avril 2017 à 13:17
A voir également:
- Forf p.stat web
- Fonction si et - Guide
- Windir stat - Télécharger - Gestion de fichiers
- AF VAO NET de Rennes, prélèvement inconnu ✓ - Forum Vos droits sur internet
- Fonction moyenne excel - Guide
- Forf p. stat web - Forum Réseaux sociaux
1 réponse
Dalfab
Messages postés
706
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
2 novembre 2023
101
19 avril 2017 à 05:53
19 avril 2017 à 05:53
Bonjour,
lecture_repertoire->d_name est un nom de fichier dans le répertoire relatif "directory" pas un chemin. Les fichiers à analyser ont le nom relatif "directory/" auquel on doit concaténer lecture_repertoire->d_name.
Inclure un fichier .c, ne pas fermer un répertoire ouvert, et ne pas tester les valeurs de retour des fonctions ne sont pas des bonnes idées.
lecture_repertoire->d_name est un nom de fichier dans le répertoire relatif "directory" pas un chemin. Les fichiers à analyser ont le nom relatif "directory/" auquel on doit concaténer lecture_repertoire->d_name.
Inclure un fichier .c, ne pas fermer un répertoire ouvert, et ne pas tester les valeurs de retour des fonctions ne sont pas des bonnes idées.
21 avril 2017 à 00:31
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<errno.h>
#include<string.h>
#define bufsiz 1024
#include <sys/stat.h>
#include <dirent.h>
int i=0;
int n=0;
int cpt=0;
int fermeture_repertoire;
char* ct;
char bufer[bufsiz];
char* arg[bufsiz];
char buf[bufsiz];
const char* src="directory/";
int main(int argc,char* argv[]){
struct stat buffer;
DIR* ouverture_repertoire;
struct dirent* lecture_repertoire;
ouverture_repertoire=opendir("directory");
if(ouverture_repertoire==NULL) perror("---Erreur ouverture repertoire---\n");
while( (lecture_repertoire=readdir(ouverture_repertoire))!=NULL ){
strcpy(bufer,src);
if( (strcmp(lecture_repertoire->d_name,"."))!=0 && (strcmp(lecture_repertoire->d_name,".."))!=0 ){
for(i=0;lecture_repertoire->d_name[i]!='\0';i++){
buf[i]=lecture_repertoire->d_name[i];
}
buf[i+1]='\0';
ct=buf;
strcat(bufer,ct);
arg[cpt]=bufer;
printf("%s\n",arg[cpt]);
//Vidage des buffers
for(i=0;i<bufsiz;i++) bufer[i]='\0';
for(i=0;i<bufsiz;i++) buf[i]='\0';
}
Probleme à ce niveau , aucune incrementation de n quelques soit le type de fichier(fichier regulier / repertoire)
stat(arg[cpt],&buffer);if(S_ISDIR(buffer.st_mode)) n=n+1;
printf("%d\n",n);
cpt=cpt+1;
}
fermeture_repertoire=closedir(ouverture_repertoire);
if(fermeture_repertoire<0) perror("---Erreur Fermeture repertoire---\n");
}
21 avril 2017 à 13:17
Je t'encourage à utiliser un debugger et à regarder ce qu'il y a dans tes variables.
Puis essaie :