|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Formateur en informatique Inscription : décembre 2012 Messages : 11 ![]() |
Bonjour,
Après plusieurs heures de recherche toujours pas de solution, je me rends compte que je ne suis pas aussi à l'aise avec les pointeurs que je ne pensais.. Code :
Code :
Merci d'avance pour votre aide |
||||
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() ![]() Ingénieur systèmes embarqués Inscription : juin 2009 Messages : 1 706 ![]() |
Pourquoi souhaites-tu faire un tableau de structures puisque cette structure contient déjà un tableau ?
__________________
Si Code::Blocks vous dit undefined reference to 'socket@12', cela signifie que vous avez un problème d'édition des liens. Allez dans Projects / Build Options / Linker Settings / Add et renseigner ici les .a qui vont bien. Exemple pour les sockets : C:\Program Files\CodeBlocks\MinGW\lib\libws2_32.a Pour les adeptes du langage SMS, allez ici et ramenez la traduction française ^^ Pour vos problèmes d'embarqué, utilisez le forum dédié ! |
|
00
|
|
|
#3 |
|
Invité de passage
![]() Formateur en informatique Inscription : décembre 2012 Messages : 11 ![]() |
parce que j'en ai besoin pour stocker dedans quelques fichiers ! mais ce n'est pas ça ma question, ce que je veux savoir ,c'est comment faire le tri de " res " selon le " name "
|
|
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() ![]() Ingénieur systèmes embarqués Inscription : juin 2009 Messages : 1 706 ![]() |
Si tu veux stocker quelques fichiers dedans, pourquoi un tableau de tableaux et non simplement un tableau ? En fait, ça a à avoir avec ta question parce que le premier paramètre de qsort est le tableau à trier :
Or, si res est un tableau de structures contenant chacune un tableau, il faut que tu lui précises laquelle ces structures il doit trier. En effet, ta fonction de comparaison compare deux fichiers, qsort te servira donc à trier un tableau de fichier. C'est le premier paramètre. Le second sera le nombre d'éléments de ce tableau (la structure le contient). Le troisième est la taille d'un élément (sizeof pourra t'aider).
__________________
Si Code::Blocks vous dit undefined reference to 'socket@12', cela signifie que vous avez un problème d'édition des liens. Allez dans Projects / Build Options / Linker Settings / Add et renseigner ici les .a qui vont bien. Exemple pour les sockets : C:\Program Files\CodeBlocks\MinGW\lib\libws2_32.a Pour les adeptes du langage SMS, allez ici et ramenez la traduction française ^^ Pour vos problèmes d'embarqué, utilisez le forum dédié ! |
|
00
|
|
|
#5 |
|
Invité de passage
![]() Formateur en informatique Inscription : décembre 2012 Messages : 11 ![]() |
je voudrais trier le tableau qui est dans "res " c'est à dire : res->t
selon le champ "name", c'est pour un projet, j'utilise cette structure dans mes différentes fonctions (environ 1000 lignes de code) sans changer la structure, je peux réussir à faire appel à qsort ? Merci pour votre aide |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Formateur en informatique Inscription : décembre 2012 Messages : 11 ![]() |
c'est la structure qui me semblait la plus évident, un tableau de fichiers c'est la taille du tableau et un pointeur vers un tableau de pointeurs, je vois Bktero ce que tu veux dire, j'ai testé la fonction qsort sur plusieurs structures plus simples, avec différentes fonctions de comparaisons pour bien comprendre mais pour lui donner le bon argument pour ma structure là c'est plus compliqué.. comment lui dire ce qui est un tableau de fichiers ? je pensais que res->t était correct, mais non..
|
|
|
00
|
|
|
#7 | ||||||
|
Invité de passage
![]() Formateur en informatique Inscription : décembre 2012 Messages : 11 ![]() |
Je viens de finir de corriger les erreurs, je ne savais pas que mon struct file** t était inutile, y a t'il une différence ?
Code :
Code :
Code :
|
||||||
|
|
00
|
|
|
#8 | ||
![]() ![]() |
Bonjour,
Citation:
nmemb = nombre d'élément size = taille d'un élément compar = pointeur sur une fonction de comparaison d'élément. Donc : Citation:
__________________
Recherche devs C++ motivés et sérieux pour Last Dungeon. Chaîne Youtube : Vidéos Ma page DVP : http://neckara.developpez.com/ |
||
|
|
00
|
|
|
#9 | ||||
|
Membre émérite
![]() Ingénieur Inscription : janvier 2009 Messages : 494 ![]() |
Une remarque sur la forme mais qui me parait essentielle surtout si - je me base sur ton statut "formateur en informatique" - tu prépares un cours.
Mettre, même en commentaire, : Code :
Code :
|
||||
|
|
10
|
|
|
#10 | ||
|
Membre habitué
![]() ![]() anciennement "sopsag" Inscription : février 2011 Messages : 118 ![]() |
Bonjour étudiante6, je trouve que tu te compliques un peu la vie avec tes structures et autres **.
Voici une petite version "simplifiée" : Code :
De plus, n'oublie pas qu'en C (!= C++) typedef struct permet d'éviter de rajouter struct devant chaque utilisation du type. plxpy, je ne suis pas sûr de comprendre le sens de ta remarque : Tu veux dire que c'est mal d'annoncer qu'on va déclarer un tableau et de finalement déclarer une structure ?
__________________
Captain'Flam anciennement Sopsag, aka Hadrien Win seven 64 / Visual 2010 / Python 2.7 / Eclipse |
||
|
|
10
|
|
|
#11 | |
|
Membre émérite
![]() Ingénieur Inscription : janvier 2009 Messages : 494 ![]() |
Citation:
|
|
|
|
00
|
|
|
#12 |
|
Membre habitué
![]() ![]() anciennement "sopsag" Inscription : février 2011 Messages : 118 ![]() |
Alors je suis super d'accord avec toi !
Il vaut mieux pas de commentaire du tout qu'un commentaire qui ne correspond pas ! ![]() Ex : copier/coller d'une déclaration + modification de la déclaration + commentaire pas mis à jour --> au bout de quelques cas de ce genre, et tu ne sais plus ce qu'il faut croire : le code (qui peut être buggé) ou le commentaire.
__________________
Captain'Flam anciennement Sopsag, aka Hadrien Win seven 64 / Visual 2010 / Python 2.7 / Eclipse |
|
|
00
|
|
|
#13 | |||
|
Expert Confirmé Sénior
![]() ![]() Frédéric Ingénieur développement logiciels Inscription : février 2006 Messages : 3 495 ![]() |
Citation:
Oui il y a une différence. Là tu déclares une structure apte à gérer un tableau de "struct file" donc un tableau de fichiers selon ta conception. Alors qu'au premier coup, tu déclarais une structure apte à gérer un tableau de pointeurs, chaque pointeur pouvant, lui, être le début d'un tableau. Donc pour simplifier tu avais créé une structure faite pour gérer un tableau de tableaux (ce qui est la représentation C d'un tableau 2D). En l'état, ton nouveau code est mieux construit et cohérent avec ton problème. Toutefois, si tu prenais de suite l'habitude de nommer tes structures "s_" et tes types "t_" cela te simplifierait la relecture (et à nous aussi) de ton code et éviterait de confondre "file" (le type) et "file" (le fichier)...
__________________
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche. Tout ce qu'un individu reçoit sans rien faire pour l'obtenir, un autre individu a dû travailler pour le produire sans en tirer profit. Tout Pouvoir ne peut distribuer aux uns que ce qu'il a préalablement confisqué à d'autres car on n'accroît pas les biens en les divisant. Quand la moitié d'un peuple croit qu'il ne sert à rien de faire des efforts car l'autre moitié les fera pour elle, et quand cette dernière moitié se dit qu'il ne sert à rien d'en faire car ils bénéficieront à d'autres, cela s'appelle le déclin et la fin d'une nation. Dr. Adrian Rogers, 1931 |
|||
|
|
00
|
|
|
#14 |
|
Invité de passage
![]() Formateur en informatique Inscription : décembre 2012 Messages : 11 ![]() |
Merci à tous ! Ca n'a jamais été un si grand bonheur de voir le résultat d'un tri !
Encore plus que si je l'avais écris moi même pour vous dire. Et puis vos explications sont très clairs, j'ai très bien compris, je ne pouvais imaginer que le problème venait de ma structure ! Au-delà de l'erreur au niveau du commentaire lui même, il ne faut jamais mettre de commentaire à une structure si je comprends bien ? C'est vrai pour le typedef struct, merci ! Sve@r par contre je ne suis pas sûre d'avoir compris pour la convention, pour moi le "t_" était pour tableau, donc quand c'est pour une structure la convention veut qu'on commence par "s_" ? Merci donc à Captain'Flam, Sve@r, plxpy, Neckara, Bktero[/B] pour votre temps ! |
|
|
00
|
|
|
#15 | |
|
Membre habitué
![]() ![]() anciennement "sopsag" Inscription : février 2011 Messages : 118 ![]() |
Citation:
![]() Bien sûr que siiiii ! il faut mettre des commentaires ! Il n'y a jamais rien à quoi il ne faille pas mettre de commentaire. (hum... pas très claire cette phrase...) Le règle c'est que le commentaire DOIT correspondre au code. Mais, au pire, il vaut mieux pas de commentaire du tout plutôt qu'un commentaire qui ne correspond pas. Si il n'y a pas de commentaire, le lecteur va chercher à comprendre en lisant le code. C'est pas sympa pour lui, mais il devrait finir pas s'en sortir. Si le commentaire ne correspond pas, il va le lire, le croire vrai et ne comprendra plus rien à ce qui suit. Et là c'est vraiment affreux ![]() C'est un service que l'on rend au lecteur mais aussi à soi-même car on est souvent le lecteur de son propre code.
__________________
Captain'Flam anciennement Sopsag, aka Hadrien Win seven 64 / Visual 2010 / Python 2.7 / Eclipse |
|
|
|
00
|
|
|
#16 | |||||
|
Expert Confirmé Sénior
![]() ![]() Frédéric Ingénieur développement logiciels Inscription : février 2006 Messages : 3 495 ![]() |
Citation:
Code c :
Code c :
Pour les tableaux je ne pense pas qu'il y ait de convention particulière mais préfixer un tableau avec "tab_" me parait assez sensé... PS: donner un nom propre à la structure (ici "s_file") n'est pas utile ici puisque ce nom n'est jamais réutilisé. C'était juste pour l'exemple...
__________________
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche. Tout ce qu'un individu reçoit sans rien faire pour l'obtenir, un autre individu a dû travailler pour le produire sans en tirer profit. Tout Pouvoir ne peut distribuer aux uns que ce qu'il a préalablement confisqué à d'autres car on n'accroît pas les biens en les divisant. Quand la moitié d'un peuple croit qu'il ne sert à rien de faire des efforts car l'autre moitié les fera pour elle, et quand cette dernière moitié se dit qu'il ne sert à rien d'en faire car ils bénéficieront à d'autres, cela s'appelle le déclin et la fin d'une nation. Dr. Adrian Rogers, 1931 |
|||||
|
|
10
|
|
|
#17 |
|
Invité de passage
![]() Formateur en informatique Inscription : décembre 2012 Messages : 11 ![]() |
Merci, pas de soucis pour les commentaires j'essayerai d'en mettre un maximum ! (et qui correspondent au code)
C'est noté pour les noms de structures merci bonne soirée à tous |
|
|
00
|
|
|
#18 |
|
Expert Confirmé Sénior
![]() |
Au passage: essayez d'éviter le Franglais quand les mots veulent dirent deux choses différentes selon la langue (ici, "file"): Il vaut mieux mettre tous les champs de la structure en anglais pour éviter la confusion...
__________________
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant. "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?" Apparently everyone. -- Raymond Chen. Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen. |
|
|
10
|
|
|
#19 | ||
|
Invité de passage
![]() Formateur en informatique Inscription : décembre 2012 Messages : 11 ![]() |
ça m'étonne de moi donc j'ai vérifié et ce n'est pas moi, regarde ma première version
Code :
|
||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com