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 :

Information sur des fichiers


Sujet :

C

  1. #21
    Nouveau membre du Club
    Inscrit en
    Novembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 166
    Points : 39
    Points
    39
    Par défaut
    tu peut m'expliquer
    Merci

  2. #22
    Nouveau membre du Club
    Inscrit en
    Novembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 166
    Points : 39
    Points
    39
    Par défaut
    tu as ecrit
    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
     
    struct data
    {
       struct stat stat;
       char *file_name;
    };
     
    {
       struct data *p_data = malloc ((argc - 1) * sizeof *p_data);
     
       ...
       for (i = ...)
       {
          stat(...);
          p_data[i].file_name =  argv[i + 1];
       }
    je crois plutot
    p_data[i]->file_name=argv[i+1];
    mais pas sur

  3. #23
    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
    [Quels sont les mots que tu ne comprends pas dans " Merci d'utiliser le bouton [Citer] en haut à droite."]
    Citation Envoyé par melmouj
    tu as ecrit
    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
     
    struct data
    {
       struct stat stat;
       char *file_name;
    };
     
    {
       struct data *p_data = malloc ((argc - 1) * sizeof *p_data);
     
       ...
       for (i = ...)
       {
          stat(...);
          p_data[i].file_name =  argv[i + 1];
       }
    je crois plutot
    p_data[i]->file_name=argv[i+1];
    mais pas sur
    Tu devrais être sûr. Quel est le type de p_data[i] ?
    Pas de Wi-Fi à la maison : CPL

  4. #24
    Nouveau membre du Club
    Inscrit en
    Novembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 166
    Points : 39
    Points
    39
    Par défaut
    c'est un char

  5. #25
    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 melmouj
    c'est un char
    Non. Essaye encore.
    Pas de Wi-Fi à la maison : CPL

  6. #26
    Nouveau membre du Club
    Inscrit en
    Novembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 166
    Points : 39
    Points
    39
    Par défaut
    c'est du %s

  7. #27
    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 melmouj
    c'est du %s
    Tu refroidis... %s n'est pas un type.
    Aide : Quel est le type de p_data ?
    Pas de Wi-Fi à la maison : CPL

  8. #28
    Nouveau membre du Club
    Inscrit en
    Novembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 166
    Points : 39
    Points
    39
    Par défaut
    c'est un pointeur vers une structure de type data

  9. #29
    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 melmouj
    c'est un pointeur vers une structure de type data
    Pas tout a fait. C'est type 'struct data *'.

    Ok. Donc quel est le type de *p_data (autre forme de p_data[0]) ?
    Pas de Wi-Fi à la maison : CPL

  10. #30
    Nouveau membre du Club
    Inscrit en
    Novembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 166
    Points : 39
    Points
    39
    Par défaut
    *p_data represente les variables(membres de data) de struct data

  11. #31
    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 melmouj
    *p_data represente les variables(membres de data) de struct data
    Mmmm. C'est bien hésitant...

    *p_data est le premier objet (donc de rang 0 ou encore p_data[0]) du tableau pointé par p_data. Il est donc du type struct data.

    Alors pour accéder à un élément d'un 'struct xxx', c'est . ou -> ?
    Pas de Wi-Fi à la maison : CPL

  12. #32
    Nouveau membre du Club
    Inscrit en
    Novembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 166
    Points : 39
    Points
    39
    Par défaut
    Bonjour,
    c'est . et pas ->

    Merci Emmanuel

  13. #33
    Nouveau membre du Club
    Inscrit en
    Novembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 166
    Points : 39
    Points
    39
    Par défaut
    une question:

    est ce qu'il faut construire le tableau stat càd

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    struct stat * sbuf=malloc((argc-1) * sizeof * sbuf);

  14. #34
    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 melmouj
    une question:

    est ce qu'il faut construire le tableau stat càd
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    struct stat * sbuf=malloc((argc-1) * sizeof * sbuf);
    Ben non. Lorsqu'on construit le tableau de struct data, chaque élément contient un struct stat. Pas besoin d'autre chose...
    Pas de Wi-Fi à la maison : CPL

  15. #35
    Nouveau membre du Club
    Inscrit en
    Novembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 166
    Points : 39
    Points
    39
    Par défaut
    car quand je fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    if (p_data != NULL)
      {
      	int result=0;
     
      	for(i=0; !result && i < nbr; i++)
      	{
      	  result=stat(argv[i+1], p_data + i);
      	  p_data[i].file_name =  argv[i + 1]; 
      	}
     
    ................
    j'ai des warnings

  16. #36
    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 melmouj
    j'ai des warnings
    Et bien sûr, on est censé deviner lesquels...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
           result=stat(argv[i+1], &p_data[i].stat);
    Pas de Wi-Fi à la maison : CPL

  17. #37
    Nouveau membre du Club
    Inscrit en
    Novembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 166
    Points : 39
    Points
    39
    Par défaut
    attend si j'ai bie compris c'est la meme chose que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    result=stat(argv[i+1], p_data.stat +i);

  18. #38
    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 melmouj
    attend si j'ai bie compris c'est la meme chose que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    result=stat(argv[i+1], p_data.stat +i);
    Non. On veut l'adresse d'une structure qui se trouve dans un élément de tableau :

    tableau : p_data
    élement de tableau : p_data[i]
    structure : p_data[i].stat
    adresse de la structure : &p_data[i].stat

    il n'y a pas d'alternative (simple)
    Pas de Wi-Fi à la maison : CPL

  19. #39
    Nouveau membre du Club
    Inscrit en
    Novembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 166
    Points : 39
    Points
    39
    Par défaut
    maintenant pour la fct de comparaison j'ai fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int compar_size(const void * pt_a, const void * pt_b) 
    { 
     
      return strcmp( (*(data *)pt_a).file_name,  (*(data *)pt_b).file_name);
      //return pt_sa->st_mtime - pt_sb->st_mtime;
    }
    par contre pour la taille je vois pas comment faire!

  20. #40
    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 melmouj
    maintenant pour la fct de comparaison j'ai fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int compar_size(const void * pt_a, const void * pt_b) 
    { 
      return strcmp( (*(data *)pt_a).file_name,  (*(data *)pt_b).file_name);
      //return pt_sa->st_mtime - pt_sb->st_mtime;
    }
    par contre pour la taille je vois pas comment faire!
    Bah, il suffit de refléchir un peu.

    Dans la fonction de comparaison, on reçoit l'adresse de 2 éléments du tableau. Comme le code est générique, ce sont des void const *, mais en réalité, quel est le type ?

    Il suffit alors de définir deux pointeurs locaux de ce type et de les initialiser avec les valeurs reçues. Ensuite, il suffit de comparer (avec l'opérateur -) les valeus des tailles. Pour atteindre un élément, on utilise autant de fleches et de points que nécessaire...

    Il faut rester simple et clair. Le code que tu as posté, c'est le contraire (et en plus, il manque des 'const'). Si tu le comprends, c'est bien et je me demande alors pourquoi tu poses la question pour la taille.

    Si tu ne le comprends pas (genre pompage sauvage...), pose des questions.
    Pas de Wi-Fi à la maison : CPL

Discussions similaires

  1. Obtenir des informations sur un fichier
    Par stalacta dans le forum Général Python
    Réponses: 8
    Dernier message: 25/01/2014, 10h55
  2. Sortie des informations sur un fichier
    Par ayoubnour dans le forum Langage
    Réponses: 5
    Dernier message: 15/06/2009, 09h00
  3. Obtenir des informations sur un fichier
    Par Just dans le forum Langage
    Réponses: 1
    Dernier message: 19/02/2008, 10h42
  4. Réponses: 8
    Dernier message: 13/07/2006, 01h17
  5. Extraction de données sur des fichiers excel
    Par iupgeii dans le forum MFC
    Réponses: 3
    Dernier message: 23/01/2004, 13h53

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