tu peut m'expliquer
Merci
tu peut m'expliquer
Merci
tu as ecrit
je crois plutot
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]; }
p_data[i]->file_name=argv[i+1];
mais pas sur
[Quels sont les mots que tu ne comprends pas dans " Merci d'utiliser le bouton [Citer] en haut à droite."]
Tu devrais être sûr. Quel est le type de p_data[i] ?Envoyé par melmouj
Pas de Wi-Fi à la maison : CPL
c'est un char
Non. Essaye encore.Envoyé par melmouj
Pas de Wi-Fi à la maison : CPL
c'est du %s
Tu refroidis... %s n'est pas un type.Envoyé par melmouj
Aide : Quel est le type de p_data ?
Pas de Wi-Fi à la maison : CPL
c'est un pointeur vers une structure de type data
Pas tout a fait. C'est type 'struct data *'.Envoyé par melmouj
Ok. Donc quel est le type de *p_data (autre forme de p_data[0]) ?
Pas de Wi-Fi à la maison : CPL
*p_data represente les variables(membres de data) de struct data
Mmmm. C'est bien hésitant...Envoyé par melmouj
*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
Bonjour,
c'est . et pas ->
Merci Emmanuel
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...Envoyé par melmouj
Pas de Wi-Fi à la maison : CPL
car quand je fait
j'ai des warnings
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]; } ................
Et bien sûr, on est censé deviner lesquels...Envoyé par melmouj
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
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 :Envoyé par melmouj
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
maintenant pour la fct de comparaison j'ai fait
par contre pour la taille je vois pas comment faire!
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; }
Bah, il suffit de refléchir un peu.Envoyé par melmouj
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager