IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

problème : quelles sontles fonctions a utiliser pour créer un gestionnaire de fichier


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 1
    Points
    1
    Par défaut problème : quelles sontles fonctions a utiliser pour créer un gestionnaire de fichier
    Bonsoir à tous, tout est dans le titre, je voudrais créer un petit programme qui fait comme l'explorateur windows en gros, donc je voudrais savoir quelles sont les fonctions à utiliser pour effectuer ca.

    Par exemple quelle fonction utiliser pour juste afficher tous les repertoires et tous les fichiers du dossier ou j'ai lancé mon application, puis comment changer de dossier etc.

    Si vous avez quelques conseils aussi sur comment m'y prendre pour stocker ces informations c'est a dire le nom de tous les repertoires etc, je vous en serais très reconnaissant!

    ps : mon prog va se servir d'une interface graphique evidement

  2. #2
    Membre actif
    Avatar de odsen.s
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    269
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 269
    Points : 243
    Points
    243
    Par défaut
    Salut,

    je voudrais créer un petit programme
    Il sera loin d'être petit, c'est un gros projet.
    ps : mon prog va se servir d'une interface graphique evidement
    Tu as déjà choisi laquelle ? Sais-tu en utiliser une particulièrement ?

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    nan mais c'est un petit programme, il va pas faire beaucoup de fonctionnalité, meme l'interface graphique t'inquiete pas pour laquelle c'est et si je serais l'utilisé, je demande juste si tu peux m'aider pour savoir les fonctions necessaires pour réaliser ca stp ?

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    je crois avoir trouvé quelques fonctions qui peut confirmer svp ? et me conseiller pour les utiliser :

    getcwd, chdir

    mais quelles fonctions permettent d'afficher le contenue d'un repertoire si elles existent ?

  5. #5
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par fusia
    je crois avoir trouvé quelques fonctions qui peut confirmer svp ? et me conseiller pour les utiliser :

    getcwd, chdir

    mais quelles fonctions permettent d'afficher le contenue d'un repertoire si elles existent ?
    opendir(), readdir()... C'est POSIX.1, donc très portable...
    Pas de Wi-Fi à la maison : CPL

  6. #6
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    J'ajouterais que pour l'interface graphique tu peux utiliser GTK+, comme ca tu sera 100% portable et par ailleurs, la GLib intègre déjà des fonctions comme celles proposées par Emmanuel
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    opendir(), readdir()... C'est POSIX.1, donc très portable...

    C'est POSIX.1 ? ca signifie quoi exactement ?

    Pour l'interface graphique c'est celle qu'un prof m'a fait , donc on peut pas vraiment parler de portabilité c'est juste qu'elle va me servir pour m'entrainer

    Et que renvoie readdir ? j'ai lu que c'etait un DIR* mais j'ai jamais vu ce genre de pointeur sur un repertoire auparavant, quelqu'un pourrait me montrer un exemple rapide d'affichage du contenu d'un repertoire svp ?
    Je déclare un pointeur de type DIR* et je lui affecte ce que renvoie readdir si j'ai bien compris ?
    Sauf que je dois faire quoi pour afficher le contenue ?

    merci d'avance!

  8. #8
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par fusia
    C'est POSIX.1 ? ca signifie quoi exactement ?
    http://emmanuel-delahaye.developpez.com/notes.htm#posix
    Et que renvoie readdir ? j'ai lu que c'etait un DIR* mais j'ai jamais vu ce genre de pointeur sur un repertoire auparavant, quelqu'un pourrait me montrer un exemple rapide d'affichage du contenu d'un repertoire svp ?
    Je déclare un pointeur de type DIR* et je lui affecte ce que renvoie readdir si j'ai bien compris ?
    Sauf que je dois faire quoi pour afficher le contenue ?
    C'est une FAQ.
    Pas de Wi-Fi à la maison : CPL

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    je vais lire la FAQ en esperant que ca m'aide merci..

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Bon bah rien sur cette faq concernant ce que je recherche sauf pour POSIX oui.

    Personne pour m'aider svp ?

    EDIT : si vous avez une FAQ qui explique correctement les listes chainées, ca me serait d'une grande aide je pense pour comprendre mon probleme

  11. #11
    Membre actif Avatar de je®ome
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Points : 225
    Points
    225
    Par défaut
    Voici un exemple comment afficher le contenu d'un répertoire sur l'entrée std.
    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
    25
    26
    27
    28
    29
    #include <stdio.h>
    #include <stdlib.h>
    #include <sys/types.h>
    #include <dirent.h>
     
    int main(int argc,char *argv[])
    {
    	DIR *a;
    	struct dirent *d;
    	char *final;
    	/* Ouverture du répertoire donné en paramètre
    	*/
    	a=opendir(argv[1]);
    	if(a==NULL)
    	{
    		perror("Echec lors du traitement d'un répertoire");
    		exit(1);
    	}
    	/* parcours du répertoire
    	*/
    	while((d=readdir(a))!=NULL)
    	{
    		printf("%s\n",d->d_name);
    	}
    	/* fermeture du répertoire donné en argument a la fonction
    	*/
    	closedir(a);
    	return 0;
    }
    Le programme prend le chemin du répertoire en question en paramètre.
    J'espère que cela t'aidera.

    a+
    Wer nicht probiert, verliert !!

  12. #12
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par fusia
    Bon bah rien sur cette faq concernant ce que je recherche sauf pour POSIX oui.
    Et ça ?

    http://c.developpez.com/faq/c/?page=fichiers
    EDIT : si vous avez une FAQ qui explique correctement les listes chainées, ca me serait d'une grande aide je pense pour comprendre mon probleme
    Le sujet est traité sur ce site

    http://chgi.developpez.com/liste/
    http://nicolasj.developpez.com/articles/listesimple/
    etc.

    et sur le mien.

    http://emmanuel-delahaye.developpez....s_chainees.htm
    Pas de Wi-Fi à la maison : CPL

  13. #13
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Je ne sais pas si la nouvelle page source C est en ligne, mais j'y ais mis un source pour lister les repertoires et sous-repertoires. Tu pourra peut-etre t'en inspirer.

    As-tu choisi un environnement graphique ?
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  14. #14
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    l'environnement graphique a été codé par un de mes profs donc np pour ca, j'ai la liste des fonctions a utiliser.


    Merci à vous deux je vais voir tout cette infos

  15. #15
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    j'ai une question concernant les listes chainées. Est ce qu'on peut mettre dans une structure un tableau de charactere de dimension variable ( si on la connais pas par exemple)

    genre :

    struct test {
    char nom[30];
    };

    ici je peux créer une variable de type "test" qui ne peut contenir que 29 caractères ou alors j'ai un moyen d'influer sur ca ?

    je demande ca parce que mon idée pour mon gestionnaire de fichier était de faire une liste chainée avec un champ "nom" contenant le nom des fichiers. Mais vu que je connais pas le nombre de caractere du repertoire , vous me conseillez quoi ?

  16. #16
    Membre actif
    Avatar de odsen.s
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    269
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 269
    Points : 243
    Points
    243
    Par défaut
    j'ai une question concernant les listes chainées. Est ce qu'on peut mettre dans une structure un tableau de charactere de dimension variable ( si on la connais pas par exemple)

    genre :

    struct test {
    char nom[30];
    };

    ici je peux créer une variable de type "test" qui ne peut contenir que 29 caractères ou alors j'ai un moyen d'influer sur ca ?

    je demande ca parce que mon idée pour mon gestionnaire de fichier était de faire une liste chainée avec un champ "nom" contenant le nom des fichiers. Mais vu que je connais pas le nombre de caractere du repertoire , vous me conseillez quoi ?
    Ben, tu déclares dans ta structure un pointeur sur char.
    Et tu alloues l'espace nécessaire avec malloc.
    Tu n'as jamais fait d'allocation dynamique ?

  17. #17
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par fusia
    j'ai une question concernant les listes chainées. Est ce qu'on peut mettre dans une structure un tableau de charactere de dimension variable ( si on la connais pas par exemple)
    Non. Par contre, on peut mettre un pointeur du même type qu'un élément du tableau et lui donner la valeur d'un tableau dynamique du même type et de la bonne taille. Pour les chaines, strdup() (POSIX.1, donc très portable) est un moyen simple et courant de le faire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    struct node
    {
       /* link */
       struct node *p_next;
     
       /* data */
       char *p_data;
    };
    [fabriqué avec 95% de caractères recyclés]
    Pas de Wi-Fi à la maison : CPL

  18. #18
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    bonjour, j'aurais une autre question à vous poser svp.
    Je voudrais afficher la date de création et la date de modification d'un fichier , il s'agit alors d'utiliser la fonction stat.

    Sauf que quand j'affiche ce qu'elle me renvoie, c'est pas du tout une date, pouvez vous m'expliquer pourquoi et comment avoir le format normal de la date svp ?

    Voici le code :
    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
    25
    26
     
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <sys/stat.h>
    #include<sys/types.h>
    #include <unistd.h>
    #include<time.h>
     
     
    int main (int nb_args, char * args [])
    {
      struct stat sts;
      char *c=malloc(20*sizeof(char));
     
      /*if (nb_args != 2) {
        fprintf (stderr, "syntaxe : %s &ltfichier>\n", args [0]);
        exit (1);
        }*/
     
      if ( stat (nom, & sts) != 0) {
        printf ("Erreur le fichier n'existe pas\n");
        exit (1);
      }
      printf("derniere modif :%lu %lu\n ",sts.st_mtime,sts.st_atime);
    }
    Merci d'avance

  19. #19
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par fusia
    bonjour, j'aurais une autre question à vous poser svp.
    Je voudrais afficher la date de création et la date de modification d'un fichier , il s'agit alors d'utiliser la fonction stat.

    Sauf que quand j'affiche ce qu'elle me renvoie, c'est pas du tout une date, pouvez vous m'expliquer pourquoi et comment avoir le format normal de la date svp ?

    Voici le code :
    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
    25
    26
     
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <sys/stat.h>
    #include<sys/types.h>
    #include <unistd.h>
    #include<time.h>
     
     
    int main (int nb_args, char * args [])
    {
      struct stat sts;
      char *c=malloc(20*sizeof(char));
     
      /*if (nb_args != 2) {
        fprintf (stderr, "syntaxe : %s &ltfichier>\n", args [0]);
        exit (1);
        }*/
     
      if ( stat (nom, & sts) != 0) {
        printf ("Erreur le fichier n'existe pas\n");
        exit (1);
      }
      printf("derniere modif :%lu %lu\n ",sts.st_mtime,sts.st_atime);
    }

    Merci d'avance
    Il faut convertir la date avec ctime
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/08/2012, 14h24
  2. Réponses: 5
    Dernier message: 16/01/2008, 16h00
  3. Quelle est la technique utilisée pour la création d'inventaire ?
    Par Edarian dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 10/03/2007, 10h49
  4. Les différents codes utilisables pour créer un site web ?
    Par mathieu7497 dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 09/03/2006, 10h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo