baka72 | 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 ca a lair un problème de tableau mais jarrive pas a résoudre :s
est ce que quelq'un peut maider svp
Code :
- void afficherFichier(char *repertoire){
- int tabNb[30];
- char** tabUser;
- char *user;
- int cpt=0;int k;
- int temp=0;
- DIR *rep;
- struct dirent *liste;
- struct stat sts;
- struct passwd *pass;
- char nomrep[NAME_MAX+1] ;
- char nom[30];
- tabUser = malloc(30 * sizeof(char *));
- for(k=0;k<30;k++) strcpy(tabUser[k],"" );
- rep=opendir(repertoire);
- if(rep==NULL){
- printf("Erreur de répertoire 2 : %s\n",repertoire);
- }
- else{
- while((liste=readdir(rep))!=NULL){
- sprintf(nomrep,"%s/%s",repertoire,liste->d_name);
- stat(nomrep,&sts);
- if (((strcmp(liste->d_name,"." )!=0)&&
- (strcmp("..",liste->d_name)!=0)&&
- !S_ISDIR(sts.st_mode))){
- pass = getpwuid(sts.st_uid);
- user = malloc((strlen(pass->pw_name)+1) * sizeof(char));
- strcpy(user,pass->pw_name);
- while((temp<cpt)&&(strcmp(tabUser[temp],user)!=0)) temp++;
- if(strcmp(tabUser[temp],user)==0){
- tabUser[cpt]=malloc((strlen(user)+1) * sizeof(char));
- strcpy(tabUser[cpt],pass->pw_name);
- tabNb[cpt]=tabNb[cpt]+1;
- cpt++;
- }
- temp=0;
- }
- }
- printf("%s :\n",nomrep);
- temp=0;
- while(temp<cpt){
- printf("%s(%d)\n",tabUser[temp],tabNb[temp]);
- temp++;
- }
- }
- closedir(rep);
- }
|
|