jQuery
En savoir plus
Adobe Flex & Flash
En savoir plus
ASP.NET
En savoir plus

| Page Précédente 1 2 | |||||||||||||||||||
| Pseudo | Commentaire | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Page Précédente 1 2 | |||||||||||||||||||
Ge0
|
# Posté le 16/05/2010 à 18:48:29 | ||||||||||||||||||
bidouille !![]() Groupe : Anciens
Ville : Lyon |
Edit : désolé du double post, petit problème lors de la soumission de mon message !
|
||||||||||||||||||
Quentin Guibert
|
# Posté le 23/06/2010 à 23:15:27 | ||||||||||||||||||
![]()
Ville : Saint martin de valgalgues |
Salut tout le monde, Citation : Grinwik dirent.h est un header standard. J'imagine que tu voulais dire que le fichier d'interface de bibliothèque 'dirent.h' fait parti de la bibliothèque standard du langage C, vu le contexte... Théoriquement, le fichier d'interface de bibliothèque 'dirent.h' fait parti de la bibliothèque du langage C conforme à la spécification POSIX. Techniquement, il peut être vu comme standard, mais pour les puristes, il ne l'est pas. :] Enfin, je vois ça comme ça moi. Citation : TuxWeb Mais j'aurais plutôt tendance à faire :Code : C
Ouais mais pour plus de portabilité il faut se limiter à l'utilisation des membres 'd_name' et 'd_ino'. Ce sont les deux seuls membres qui sont définies par SUSv3. Il vaut mieux utiliser une fonction de la famille 'stat' pour savoir si ton entrée est un répertoire. Ou bien alors, si tu veux absolument utiliser cette manière de faire, tu peux tester la constante symbolique '_DIRENT_HAVE_D_TYPE'. Il y a une liste plus complète dans la documentation. Citation : geekologue Code : C
C'est n'importe quoi ça... ![]() Imaginons que le pointeur 'ent' pointe sur une chaîne de caractères qui soit un chemin vers un répertoire (absolue ou relatif, comme tu veux). Le pointeur sur la variable structurée de type 'DIR' peut très bien valoir 'NULL' après avoir récupéré le retour de la fonction 'opendir', ce que je veux dire, c'est que 'NULL' peut être retourné pour de nombreuses raisons : - Trop de descripteurs de fichiers dans la table des descripteurs de fichiers du processus - Répertoire inexistant - Accès interdit - Manque de mémoire - Et j'en passe ! Tu peux encore si tu veux tester la valeur de la variable 'errno' après l'appel de la fonction 'opendir'. La variable 'errno' vaudra la valeur représenté par la constante symbolique 'ENOTDIR'... Citation : geekologue pour la fonction qui compte le nombre de fichiers, tu fait autant de tests qu'il y a de fichiers. Pourquoi pas soustraire 2 à la fin ? Tout simplement parce que SUSv3 ne garantit pas que la fonction 'readdir' ou la fonction 'readdir_r' prennent en compte le répertoire courant et le répertoire parent. Citation : Geo0w fichierLu pointe probablement sur des données allouées sur le tas. Où faut-il libérer ces données ? Voilà une bonne question ! C'est dommage que l'auteur ne précise rien sur ce point... ![]() Explication : Le pointeur retourné par la fonction 'readdir' est de classe d'allocation statique. Donc, ce pointeur existe pendant toute la durée du processus. Mais comme le pointeur retournée est de classe d'allocation statique, sa valeur est écrasé à chaque appel de la fonction 'readdir' ! Ce qui fait donc que la fonction 'readdir' n'est pas réentrante. Si tu veux pouvoir utiliser une fonction 'readdir' version réentrante, tu peux utiliser la fonction 'readdir_r'. http://manpages.ubuntu.com/manpages/ja [...] eaddir.3.html Sinon, au sujet du tutoriel, il y a des partis à SUPPRIMER complètement... Comme la partie 'Savoir si le fichier lu est un répertoire ou non', c'est... ![]() Pourquoi ne pas remplacer les constantes littéral '1' et '0' que tu écris avec l'instruction 'return' par les constantes symboliques qui les représentent ? Autre point, tu utilises la fonction 'system', il ne faut jamais utiliser la fonction 'system', enfin c'est vraiment à éviter dans un tutoriel, des personnes pourraient prendre l'habitude de trop l'utiliser et tomber dans ses failles. Dernier hic, tu passes -1 en premier argument à la fonction 'exit', pourquoi ? Je veux dire, ce n'est pas pratique courante, ce n'est pas "normalisé" on peut dire... Question ajout, tu pourrai parler des fonctions 'chdir' et 'getcwd', non ? Et pourquoi pas aussi de la fonction 'fchdir' mais ça serai un peu compliqué et long à expliquer comment fonctionne cette fonction... :] Sinon, ma foi, c'est un bon tutoriel dans l'ensemble et je pense qu'il sera très bien quand tu auras corrigé tout ça. Bonne continuation ! |
||||||||||||||||||
Tonton Bébert
|
# Posté le 22/02/2011 à 14:24:29 | ||||||||||||||||||
|
Chi va piano va sano... Avis : Mitigé
Études : Ecole Centrale de Marseille |
J'ai découvert l'existence de dirent.h grâce à ce tuto. L'ensemble est cependant un peu long. Je n'ai que deux remarques :
Que les choses soient claires entre nous, Internet n'est pas à la pointe du progrès scientifique et ne mérite pas qu'on y consacre tant de temps, il y a tellement d'efforts potentiels à réunir autour du traitement du signal, de la robotique, des IHM et j'en passe. |
||||||||||||||||||
BigPuppy
|
# Posté le 09/04/2011 à 17:32:00 | ||||||||||||||||||
![]()
Ville : Le havre |
à propos de errno : Citation : Monsieur_JaKy si j'en parle, c'est qu'il y a quand même un rapport avec dirent :); le point virgule à la fin, c'est un reflex ?
|
||||||||||||||||||
konfiot
|
# Posté le 06/05/2011 à 17:25:40 | ||||||||||||||||||
Ex cczerty; RTFM = 42;![]()
Ville : Eaubonne |
Euh petite question dirent.h sous visual C++ ça existe pas... vous avez une alternative ? Sinon très bon tuto
2.25 Go d'espace disque accessible partout et gratuitement |||||| Nom de domaine Gratuit Citation : Moi Mon rêve c'est de pouvoir dire, un jour : quand j'étais jeune, j'étais con Halte aux bots |||||| Lecteur de pensées (ce n'est pas un attrape idiots) |
||||||||||||||||||
M974
|
# Posté le 18/07/2011 à 09:17:57 | ||||||||||||||||||
this shit's got to go !![]()
|
Merci pour le tuto ! Mais à cause des fichiers sans extentions sous UNIX, pour la fonction isDir, j'utilise plutôt ça :Code : C
|||||||||| langage C :70% |||||||||| assembleur X86(FASM) :6% |
||||||||||||||||||
Lucas-84
|
# Posté le 18/09/2011 à 18:48:42 | ||||||||||||||||||
[Tomber en marche]![]()
Ville : Uchaux |
Bonjour, Citation Pour commencer, qu'est-ce que dirent.h ? Comme le .h pouvait le laisser supposer, c'est un header, et il va falloir l'inclure dans nos programmes. ![]() Ce header est portable, il est donc disponible sur Windows, Mac et Linux. D'ailleurs, vous pouvez aller voir dans le dossier include de votre compilateur, il s'y trouve bel et bien. ![]() Mais si j'ai mis le mot « portable » en italique, c'est parce qu'il ne l'est pas totalement. dirent.h est un header sous la norme POSIX... Ce qui signifie que c'est un header standard pour les systèmes UNIX. Les codes et les possibilités seront exactement les mêmes pour Linux et Mac par exemple. Si mes souvenirs sont bons, dirent.h prend part à C POSIX Library, ce qui inclue les systèmes POSIX. Cet en-tête ne fait pas partie de la bibliothèque standard C (remarquez son absence sur cette liste). Néanmoins, on la considère comme pseudo-standard, car elle est implémentée sur la quasi-majorité des systèmes. Il faudrait tout de même préciser un peu tout cela, ça sent les divergences d'opinion qui donnent un texte un peu hésitant et pas vraiment clair. Citation Cela fait partie des changements dont j'ai parlé précédemment. Ces lignes de codes signifient : « Si on n'utilise pas un système d'exploitation Windows, alors on inclut sys/types.h ». Ce header contient des types « inventés » qui ne seront pas forcément indispensables au long de ce chapitre, mais qui se révèleront utiles. Sous Windows (ne me demandez pas pourquoi), on n'a pas besoin d'utiliser ces types. ![]() Quand tu fais un #ifndef (WIN32), le code inclus ensuite compilera également sur les plateformes (WIN64). A corriger donc. Citation Vous allez voir, les prototypes des fonctions d'ouverture et de fermeture de dossier ne vont pas vous dépayser des fichiers, la manière de procéder est grosso modo la même. ![]() En ce qui me concerne, j'aime garder le nom des paramètres des man quand je montre un prototype. Dans notre cas : Code : C
Citation Code : C
Alors, quelques remarques à propos du code : Code : C
Il est souvent demandé d'initialiser le pointeur à NULL, mais dans notre cas je n'en vois pas l'intérêt. Pourquoi ne pas l'initialiser directement avec la valeur de retour d'opendir, plutôt que de gâcher une ligne inutile ? Code : C
Peut être raccourci en : Code : C
Les appels à exit sont normalement réservés au cas extrêmes. Pourquoi ne pas afficher un message d'erreur et quitter avec un return ? Bref, je te propose une autre version : Code : C
Citation Utiliser errno Hum... Je comprends que tu n'as pas eu le choix, mais introduire errno dans un tutoriel sur dirent, c'est un peu hors sujet. Citation j'ai l'impression que l'utilisation d'errno est très méconnue sur le SdZ Site du Zéro... Elle est pourtant très utile, alors pourquoi ne pas vous expliquer son fonctionnement ? Ca, c'est vrai, je te l'accorde. Toutefois, elle est également introduite dans ce tutoriel. Citation La fonction attend une chaîne de caractères qui sera écrite à l'écran (à la manière d'un printf()). Ensuite, perror() se contentera de décrire l'erreur (in English of course). Plus exactement : Cette fonction affiche sur stderr (sortie d'erreur standard) une représentation en une chaîne de caractère de l'erreur décrite par errno, précédée par la chaîne de caractère pointée par s ainsi que d'un espace. Citation Rappelez-vous : errno ne se limite pas à la manipulation des dossiers. D'autres fonctions standards l'utilisent, comme fopen() par exemple. Pourquoi un retour à la ligne ? Citation Code : Bash
Pour quoi Code : Bash
Bref, je me suis arrêté là par manque de temps. Bonne continuation. |
||||||||||||||||||
cha2010
|
# Posté le 11/11/2011 à 15:12:13 | ||||||||||||||||||
|
|
BONJOUR , ------------------- Je cherche une solution pour cette exemple car j'arrive pas a résoudre et je cherche une solution trés urgent car c'est un parti de mon examen ca sera pour demain merci d'avance pour votre aide .... --------------------------------- On suppose qu'un fichier possède plusieurs lien physique au sein d'un répertoire. Ecrire un programme C permettant de supprimer définitivement un fichier donnée en argument d'un répertoire donnée aussi en argument . |
||||||||||||||||||
060
|
# Posté le 24/12/2011 à 19:06:43 | ||||||||||||||||||
Zéro du 60![]() Avis : Très bon
Ville : Margny-lès-compiègne |
Merci pour ce tuto plus qu'utile! Maintenant je peux charger tous les fichiers d'un certain type dans un répertoire!
C cool la programmation! ![]() 90% of teens today would die if Facebook was completely destroyed. If you are one of the 10% that would be laughing, copy and paste this to your signature. |
||||||||||||||||||
Neolex
|
# Posté le 01/04/2012 à 12:39:09 | ||||||||||||||||||
|
Études : UBO |
Moi pour la fonction isDir sous Linux je fais ça : Secret (cliquez pour afficher) Code : C
|
||||||||||||||||||
spdd4114
|
# Posté le 17/04/2012 à 10:17:08 | ||||||||||||||||||
|
Avis : Bon
|
Bonjour! Premièrement c'est un bon tuto, exactement ce je cherchais. Mais y aurait-il un équivalent en c++ ? Peut-on aussi connaître la taille du repertoire sans avoir à lire tous les fichiers byte à byte? Merci |
||||||||||||||||||
tuga
|
# Posté le 23/04/2012 à 23:21:30 | ||||||||||||||||||
|
|
Bonjour à tous , j'essaye de faire un programme qui liste les fichiers dans un dossier et qui les tries par rapport à leur extension. Quelqu'un pourrai m'aider SVP ? |
||||||||||||||||||
