Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
712 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Proprietaire de fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Proprietaire de fichier

n°934563
baka72
Posté le 31-12-2004 à 11:39:50  profilanswer
 

salut a tous,
je dois réaliser une fonction qui compte pour chaque propriétaire de fichier le nombre de fichiers qu'il possède.
 
ex : /mon repertoire root(45) moi(1) lotre(4)
 
J'ai réalisé deja une fonction mais elle marche pas  :sweat:  
ca a lair un problème de tableau mais jarrive pas a résoudre :s
est ce que quelq'un peut maider svp
 

Code :
  1. void afficherFichier(char *repertoire){
  2.   int tabNb[30];
  3.   char** tabUser;
  4.   char *user;
  5.   int cpt=0;int k;
  6.   int temp=0;
  7.   DIR *rep;
  8.   struct dirent *liste;
  9.   struct stat sts;
  10.   struct passwd *pass;
  11.   char nomrep[NAME_MAX+1] ;
  12.   char nom[30];
  13.   tabUser = malloc(30 * sizeof(char *));
  14.   for(k=0;k<30;k++) strcpy(tabUser[k],"" );
  15.   rep=opendir(repertoire);
  16.   if(rep==NULL){
  17.     printf("Erreur de répertoire 2 : %s\n",repertoire);
  18.   }
  19.   else{
  20.   while((liste=readdir(rep))!=NULL){
  21.     sprintf(nomrep,"%s/%s",repertoire,liste->d_name);
  22.     stat(nomrep,&sts);
  23.     if (((strcmp(liste->d_name,"." )!=0)&&
  24.  (strcmp("..",liste->d_name)!=0)&&
  25.  !S_ISDIR(sts.st_mode))){
  26.  pass = getpwuid(sts.st_uid);
  27.          user = malloc((strlen(pass->pw_name)+1) * sizeof(char));
  28.  strcpy(user,pass->pw_name);
  29.          while((temp<cpt)&&(strcmp(tabUser[temp],user)!=0)) temp++;
  30.          if(strcmp(tabUser[temp],user)==0){
  31.   tabUser[cpt]=malloc((strlen(user)+1) * sizeof(char));
  32.   strcpy(tabUser[cpt],pass->pw_name);
  33.   tabNb[cpt]=tabNb[cpt]+1;
  34.   cpt++;
  35.          }
  36.        temp=0;
  37.     }
  38.   }
  39.   printf("%s :\n",nomrep);
  40.   temp=0;
  41.   while(temp<cpt){
  42.     printf("%s(%d)\n",tabUser[temp],tabNb[temp]);
  43.     temp++;
  44.   }
  45.   } 
  46.   closedir(rep);
  47. }

mood
Publicité
Posté le 31-12-2004 à 11:39:50  profilanswer
 

n°934576
fafounet
Posté le 31-12-2004 à 12:08:35  profilanswer
 

C'est quoi ta structure sts et ta macro S_ISDIR ?

n°934584
baka72
Posté le 31-12-2004 à 12:21:25  profilanswer
 

S_ISDIR permet de tester si un fichier est un répertoire ou pas  
sts est un structure rempli par par la fonction stat qui renvoi ainsi diverses informations sur le fichier

n°934588
fafounet
Posté le 31-12-2004 à 12:29:46  profilanswer
 

ca pourrait etre pas mal si on les avait


Message édité par fafounet le 31-12-2004 à 12:30:04
n°934591
baka72
Posté le 31-12-2004 à 12:33:29  profilanswer
 

fafounet a écrit :

ca pourrait etre pas mal si on les avait


 

Code :
  1. struct stat {
  2.                   dev_t         st_dev;      /* Périphérique                */
  3.                   ino_t         st_ino;      /* Numéro i-noeud              */
  4.                   mode_t        st_mode;     /* Protection                  */
  5.                   nlink_t       st_nlink;    /* Nb liens matériels          */
  6.                   uid_t         st_uid;      /* UID propriétaire            */
  7.                   gid_t         st_gid;      /* GID propriétaire            */
  8.                   dev_t         st_rdev;     /* Type périphérique           */
  9.                   off_t         st_size;     /* Taille totale en octets     */
  10.                   blksize_t     st_blksize;  /* Taille de bloc pour E/S     */
  11.                   blkcnt_t      st_blocks;   /* Nombre de blocs alloués     */
  12.                   time_t        st_atime;    /* Heure dernier accès         */
  13.                   time_t        st_mtime;    /* Heure dernière modification */
  14.                   time_t        st_ctime;    /* Heure dernier changement    */
  15.               };


 

Code :
  1. Les macros POSIX suivantes sont fournies pour vérifier le type de fichier :
  2.                                                                                                                            
  3.               S_ISREG(m)  un fichier régulier ?
  4.                                                                                                                            
  5.               S_ISDIR(m)  un répertoire ?
  6.                                                                                                                            
  7.               S_ISCHR(m)  un péripherique en mode caractère ?
  8.                                                                                                                            
  9.               S_ISBLK(m)  un périphérique en mode blocs ?
  10.                                                                                                                            
  11.               S_ISFIFO(m) une FIFO ?
  12.                                                                                                                            
  13.               S_ISLNK(m)  est-ce un lien symbolique ? (Pas dans POSIX.1-1996).
  14.                                                                                                                            
  15.               S_ISSOCK(m) une socket ? (Pas dans POSIX.1-1996).

n°934597
fafounet
Posté le 31-12-2004 à 12:38:10  profilanswer
 

J'ai ce message :  error: erreur de syntaxe before "blksize_t"

n°934598
baka72
Posté le 31-12-2004 à 12:40:37  profilanswer
 

heu moi j'ai pas d'erreur sur ce point la.
Vous avez obtenu cette erreur comment ?
je pense que mon erreur vient de la construction de mes tableaux tabUser et tabNb

n°934600
baka72
Posté le 31-12-2004 à 12:42:40  profilanswer
 

precision vu que ces fonctions sont d'assez bas niveau je ne pense pas qu'elle fonctionne sous windows( je suis sous linux moi)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Proprietaire de fichier

 

Sujets relatifs
déclaration xml inattendue / erreur dans fichier xslt ?Retour a la ligne dans un fichier texte.
shell script qui lit dans un fichierprobleme d'importation de fichier
fichier CSV[urgent] probleme récupération fichier ftp
Rechercher le choix d'un combobox dans un fichier excelchangement de propriétaire de fichier uploadé
[Perl][Resolu] Comment connaitre le nom du proprietaire d'un fichier[java] comment obtenir le propriétaire d'un fichier sous nt4
Plus de sujets relatifs à : Proprietaire de fichier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR