baka72 | salut, je dois récupérer le nom des personnes propriétaires d'un fichier sous linux et pour ce faire j'ai fait une fonction qui renvoyant le nom du popriétaire mais jarrive pas du tt a lutiliser apres le strcpy marche pas si je veux récupérer le nom de cette personne. merci de maider .
voici mon code
Code :
- Voici le code la fonction qui renvoi le nom du propriétaire
- char* recupNom(int Id){
- FILE *f;
- char mot[30];
- char iduser[30];
- char* user;
- char buffer;
- char bufid;
- int cpt=0,i=0,taille,cptid=0;
- f=fopen("/etc/passwd","r" );
- if (f==NULL)
- {
- printf("Problème de lecture de fichier.\n" );
- exit(1);
- }
- else{
- while(!feof(f)){
- buffer=fgetc(f);
- if(buffer==':')
- {
- mot[i]='\0';
- buffer=fgetc(f);
- while(buffer!=':') buffer=fgetc(f);
- buffer=fgetc(f);
- while(buffer!=':') {
- iduser[cptid++]=buffer;
- buffer=fgetc(f);
- }
- iduser[cptid]='\0';
- if(atoi(iduser)==Id)
- {
- break;
- }
- else{
- i=0;
- cptid=0;
- while(buffer!='\n') buffer=fgetc(f);
- }
- }
- else{
- mot[i++]=buffer;
- }
- }
- }
- fclose(f);
- mot[i+1]='\0';
- user=malloc((i+1) * sizeof(char));
- strcpy(user,mot);
- return user;
|
Code :
- void afficherFichier(char *repertoire){
- int tabNb[30];
- char** tabUser;
- char *user;
- int cpt=0;
- int temp=0;
- int longeur=0;
- DIR *rep;
- struct dirent *liste;
- struct stat sts;
- char s[NAME_MAX+1] ;
- char nom[30];
- tabUser = malloc(30 * sizeof(char *));
- rep=opendir(repertoire);
- if(rep==NULL){
- printf("Erreur de répertoire 2 : %s\n",repertoire);
- }
- else{
- while((liste=readdir(rep))!=NULL){
- sprintf(s,"%s/%s",repertoire,liste->d_name);
- stat(s,&sts);
- if (((strcmp(liste->d_name,"." )!=0)&&
- (strcmp("..",liste->d_name)!=0)&&
- !S_ISDIR(sts.st_mode))){
- strcpy(user,recupNom(sts.st_uid));
- while((temp<cpt)&&(strcmp(tabUser[temp],user)!=0)) temp++;
- if(strcmp(tabUser[temp],user)==0){
- longeur = strlen(recupNom(sts.st_uid));
- tabUser[cpt]=malloc((longeur+1) * sizeof(char));
- strcpy(tabUser[cpt],user);
- tabNb[cpt]=tabNb[cpt]+1;
- cpt++;
- }
- temp=0;
- }
- }
- printf("%s :" );
- temp=0;
- while(temp<cpt){
- printf("%s(%d)",tabUser[temp],tabNb[temp]);
- temp++;
- }
- }
- closedir(rep);
- }
|
quelqun pourrait me dire ou est le problème svp |